author | Timothy Guan-tin Chien <timdream@gmail.com> |
Wed, 04 May 2016 17:53:31 +0800 | |
changeset 296395 | de43607b15786a60277955317d27ca5145e646e9 |
parent 296394 | 57a2b1d3941f7a52c77086db05f518d88d0851f6 |
child 296396 | 25d777f7efb357fc5478251913548521986abaa0 |
push id | 76311 |
push user | cbook@mozilla.com |
push date | Fri, 06 May 2016 12:26:12 +0000 |
treeherder | mozilla-inbound@84a3e5716801 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | gijs, margaret |
bugs | 1269996 |
milestone | 49.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/toolkit/components/reader/AboutReader.jsm +++ b/toolkit/components/reader/AboutReader.jsm @@ -36,16 +36,18 @@ var AboutReader = function(mm, win, arti this._mm = mm; this._mm.addMessageListener("Reader:CloseDropdown", this); this._mm.addMessageListener("Reader:AddButton", this); this._mm.addMessageListener("Reader:RemoveButton", this); this._mm.addMessageListener("Reader:GetStoredArticleData", this); this._docRef = Cu.getWeakReference(doc); this._winRef = Cu.getWeakReference(win); + this._innerWindowId = win.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIDOMWindowUtils).currentInnerWindowID; this._article = null; if (articlePromise) { this._articlePromise = articlePromise; } this._headerElementRef = Cu.getWeakReference(doc.getElementById("reader-header")); @@ -55,20 +57,22 @@ var AboutReader = function(mm, win, arti this._contentElementRef = Cu.getWeakReference(doc.getElementById("moz-reader-content")); this._toolbarElementRef = Cu.getWeakReference(doc.getElementById("reader-toolbar")); this._messageElementRef = Cu.getWeakReference(doc.getElementById("reader-message")); this._scrollOffset = win.pageYOffset; doc.addEventListener("click", this, false); - win.addEventListener("unload", this, false); + win.addEventListener("pagehide", this, false); win.addEventListener("scroll", this, false); win.addEventListener("resize", this, false); + Services.obs.addObserver(this, "inner-window-destroyed", false); + doc.addEventListener("visibilitychange", this, false); this._setupStyleDropdown(); this._setupButton("close-button", this._onReaderClose.bind(this), "aboutReader.toolbar.close"); const gIsFirefoxDesktop = Services.appinfo.ID == "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"; if (gIsFirefoxDesktop) { // we're ready for any external setup, send a signal for that. @@ -245,29 +249,42 @@ AboutReader.prototype = { case "devicelight": this._handleDeviceLight(aEvent.value); break; case "visibilitychange": this._handleVisibilityChange(); break; - case "unload": + case "pagehide": // Close the Banners Font-dropdown, cleanup Android BackPressListener. this._closeDropdowns(); this._mm.removeMessageListener("Reader:CloseDropdown", this); this._mm.removeMessageListener("Reader:AddButton", this); this._mm.removeMessageListener("Reader:RemoveButton", this); this._mm.removeMessageListener("Reader:GetStoredArticleData", this); this._windowUnloaded = true; break; } }, + observe: function(subject, topic, data) { + if (subject.QueryInterface(Ci.nsISupportsPRUint64).data != this._innerWindowId) { + return; + } + + Services.obs.removeObserver(this, "inner-window-destroyed", false); + + this._mm.removeMessageListener("Reader:CloseDropdown", this); + this._mm.removeMessageListener("Reader:AddButton", this); + this._mm.removeMessageListener("Reader:RemoveButton", this); + this._windowUnloaded = true; + }, + _onReaderClose: function() { ReaderMode.leaveReaderMode(this._mm.docShell, this._win); }, _setFontSize: function(newFontSize) { let containerClasses = this._doc.getElementById("container").classList; if (this._fontSize > 0)