From 42dde82c4347ce8b45506d7def19b6bd57861e62 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Mon, 2 May 2016 00:51:58 -0700 Subject: [PATCH 1/3] uimanager(minor): simplify suspend event handler's signature --- frontend/ui/uimanager.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index f00b842e8..0509f54ac 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -47,16 +47,16 @@ function UIManager:init() -- suspend. So let's unschedule it when suspending, and restart it after -- resume. self:_initAutoSuspend() - self.event_handlers["Suspend"] = function(input_event) + self.event_handlers["Suspend"] = function() self:_stopAutoSuspend() - Device:onPowerEvent(input_event) + Device:onPowerEvent("Suspend") end - self.event_handlers["Resume"] = function(input_event) - Device:onPowerEvent(input_event) + self.event_handlers["Resume"] = function() + Device:onPowerEvent("Resume") self:sendEvent(Event:new("Resume")) self:_startAutoSuspend() end - self.event_handlers["PowerPress"] = function(input_event) + self.event_handlers["PowerPress"] = function() self._power_ev_handled = false local showPowerOffDialog = function() if self._power_ev_handled then return end @@ -80,10 +80,10 @@ function UIManager:init() end UIManager:scheduleIn(3, showPowerOffDialog) end - self.event_handlers["PowerRelease"] = function(input_event) + self.event_handlers["PowerRelease"] = function() if not self._power_ev_handled then self._power_ev_handled = true - self.event_handlers["Suspend"]("Suspend") + self.event_handlers["Suspend"]() end end self.event_handlers["Light"] = function() From 068cefe8fcb3289e40cd7f8e855c542367e70991 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Mon, 2 May 2016 01:35:06 -0700 Subject: [PATCH 2/3] test: flush book settings before suspend --- spec/unit/device_spec.lua | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/spec/unit/device_spec.lua b/spec/unit/device_spec.lua index 3a2f84532..bfdc4b0ba 100644 --- a/spec/unit/device_spec.lua +++ b/spec/unit/device_spec.lua @@ -94,6 +94,44 @@ describe("device module", function() os.getenv:revert() mock_input.open:revert() end) + + it("should flush book settings before suspend", function() + local sample_pdf = "spec/front/unit/data/tall.pdf" + local ReaderUI = require("apps/reader/readerui") + local Device = require("device") + local NickelConf = require("device/kobo/nickel_conf") + + stub(NickelConf.frontLightLevel, "get") + stub(NickelConf.frontLightState, "get") + NickelConf.frontLightLevel.get.returns(1) + NickelConf.frontLightState.get.returns(0) + + local UIManager = require("ui/uimanager") + stub(Device, "suspend") + stub(Device.powerd, "beforeSuspend") + stub(Device, "isKobo") + + Device.isKobo.returns(true) + local saved_noop = UIManager._resetAutoSuspendTimer + UIManager:init() + + ReaderUI:doShowReader(sample_pdf) + local readerui = ReaderUI._getRunningInstance() + stub(readerui, "onFlushSettings") + UIManager.event_handlers["PowerPress"]() + UIManager.event_handlers["PowerRelease"]() + assert.stub(readerui.onFlushSettings).was_called() + + Device.suspend:revert() + Device.powerd.beforeSuspend:revert() + Device.isKobo:revert() + NickelConf.frontLightLevel.get:revert() + NickelConf.frontLightState.get:revert() + UIManager._startAutoSuspend = nil + UIManager._stopAutoSuspend = nil + UIManager._resetAutoSuspendTimer = saved_noop + readerui:onClose() + end) end) describe("kindle", function() From 2cf4e77ae506d58fa7e4e2eac825944cd42b49bc Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Mon, 2 May 2016 22:35:18 -0700 Subject: [PATCH 3/3] readerui(chore): rename _running_instance --- frontend/apps/reader/readerui.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index 74c986bb5..d98664342 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -356,12 +356,12 @@ function ReaderUI:showReader(file) end) end -local running_instance = nil +local _running_instance = nil function ReaderUI:doShowReader(file) dbg("opening file", file) -- keep only one instance running - if running_instance then - running_instance:onClose() + if _running_instance then + _running_instance:onClose() end local document = DocumentRegistry:openDocument(file) if not document then @@ -388,11 +388,11 @@ function ReaderUI:doShowReader(file) document = document, } UIManager:show(reader) - running_instance = reader + _running_instance = reader end function ReaderUI:_getRunningInstance() - return running_instance + return _running_instance end function ReaderUI:unlockDocumentWithPassword(document, try_again) @@ -493,8 +493,8 @@ function ReaderUI:onClose() UIManager:close(self.dialog, "full") -- serialize last used items for later launch Cache:serialize() - if running_instance == self then - running_instance = nil + if _running_instance == self then + _running_instance = nil end return true end