From 55234ef899fdefbc82d5db67354e5e9aeace40cb Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Fri, 25 Dec 2015 20:54:13 -0800 Subject: [PATCH] fix: read stats crashes pdf/djvu documents --- base | 2 +- frontend/apps/reader/modules/readerfooter.lua | 7 ++++- spec/unit/readerfooter_spec.lua | 30 +++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 spec/unit/readerfooter_spec.lua diff --git a/base b/base index 9ba8cb68a..9a2503bac 160000 --- a/base +++ b/base @@ -1 +1 @@ -Subproject commit 9ba8cb68aa90ef84d33d243d619248be945c99d3 +Subproject commit 9a2503bacc3fe52f5946d8392439f946a5d8dae4 diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index 44645222d..d01bd5e53 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -230,7 +230,12 @@ function ReaderFooter:getProgressPercentage() end function ReaderFooter:getBookTimeToRead() - local current_page = self.view.document:getCurrentPage() + local current_page + if self.view.document.info.has_pages then + current_page = self.ui.paging.current_page + else + current_page = self.view.document:getCurrentPage() + end return self:getDataFromStatistics("TB: ", self.pages - current_page) end diff --git a/spec/unit/readerfooter_spec.lua b/spec/unit/readerfooter_spec.lua new file mode 100644 index 000000000..d9b9416ea --- /dev/null +++ b/spec/unit/readerfooter_spec.lua @@ -0,0 +1,30 @@ +require("commonrequire") +local DocumentRegistry = require("document/documentregistry") +local ReaderUI = require("apps/reader/readerui") +local DEBUG = require("dbg") + +describe("Readerfooter module", function() + it("should setup footer for epub without error", function() + local sample_epub = "spec/front/unit/data/juliet.epub" + local readerui = ReaderUI:new{ + document = DocumentRegistry:openDocument(sample_epub), + } + readerui.view.footer.settings.all_at_once = true + readerui.view.footer:updateFooterPage() + timeinfo = readerui.view.footer:getTimeInfo() + assert.are.same('B:0% | '..timeinfo..' | => 0 | R:100% | TB: 00:00 | TC: 00:00', + readerui.view.footer.progress_text.text) + end) + + it("should setup footer for pdf without error", function() + local sample_pdf = "spec/front/unit/data/2col.pdf" + local readerui = ReaderUI:new{ + document = DocumentRegistry:openDocument(sample_pdf), + } + readerui.view.footer.settings.all_at_once = true + readerui.view.footer:updateFooterPage() + timeinfo = readerui.view.footer:getTimeInfo() + assert.are.same('B:0% | '..timeinfo..' | => 1 | R:50% | TB: na | TC: na', + readerui.view.footer.progress_text.text) + end) +end)