From a700594d525744ddaec19db5568dac58d33cd9bb Mon Sep 17 00:00:00 2001 From: Albert Calzaretto Date: Sat, 20 Feb 2016 15:00:50 -0500 Subject: [PATCH 1/9] Opened branch and seemed to have a patchworking --- browser/components/nsBrowserGlue.js | 60 ++++++++++++++++------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index d49586ceaeb82..4b2d9558dfde8 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -581,40 +581,46 @@ BrowserGlue.prototype = { // initialization (called on application startup) _init: function BG__init() { let os = Services.obs; - os.addObserver(this, "notifications-open-settings", false); - os.addObserver(this, "prefservice:after-app-defaults", false); - os.addObserver(this, "final-ui-startup", false); - os.addObserver(this, "browser-delayed-startup-finished", false); - os.addObserver(this, "sessionstore-windows-restored", false); - os.addObserver(this, "browser:purge-session-history", false); - os.addObserver(this, "quit-application-requested", false); - os.addObserver(this, "quit-application-granted", false); + [ "notifications-open-settings" + ,"prefservice:after-app-defaults" + ,"final-ui-startup" + ,"browser-delayed-startup-finished" + ,"sessionstore-windows-restored" + ,"browser:purge-session-history" + ,"quit-application-requested" + ,"quit-application-granted" #ifdef OBSERVE_LASTWINDOW_CLOSE_TOPICS - os.addObserver(this, "browser-lastwindow-close-requested", false); - os.addObserver(this, "browser-lastwindow-close-granted", false); + ,"browser-lastwindow-close-requested" + ,"browser-lastwindow-close-granted" #endif - os.addObserver(this, "weave:service:ready", false); - os.addObserver(this, "weave:engine:clients:display-uri", false); - os.addObserver(this, "session-save", false); - os.addObserver(this, "places-init-complete", false); + ,"weave:service:ready" + ,"weave:engine:clients:display-uri" + ,"session-save" + ,"places-init-complete" + ].forEach(topic => { + os.addObserver(this, topic, true); + }) this._isPlacesInitObserver = true; - os.addObserver(this, "places-database-locked", false); + os.addObserver(this, "places-database-locked", true); this._isPlacesLockedObserver = true; - os.addObserver(this, "distribution-customization-complete", false); - os.addObserver(this, "places-shutdown", false); + os.addObserver(this, "distribution-customization-complete", true); + os.addObserver(this, "places-shutdown", true); this._isPlacesShutdownObserver = true; - os.addObserver(this, "handle-xul-text-link", false); - os.addObserver(this, "profile-before-change", false); + os.addObserver(this, "handle-xul-text-link", true); + os.addObserver(this, "profile-before-change", true); #ifdef MOZ_SERVICES_HEALTHREPORT - os.addObserver(this, "keyword-search", false); + os.addObserver(this, "keyword-search", true); #endif - os.addObserver(this, "browser-search-engine-modified", false); - os.addObserver(this, "browser-search-service", false); - os.addObserver(this, "restart-in-safe-mode", false); - os.addObserver(this, "flash-plugin-hang", false); - os.addObserver(this, "xpi-signature-changed", false); - os.addObserver(this, "autocomplete-did-enter-text", false); - + [ "browser-search-engine-modified", + "browser-search-service", + "restart-in-safe-mode", + "flash-plugin-hang", + "xpi-signature-changed", + "autocomplete-did-enter-text" + ].forEach(topic => { + os.addObserver(this, topic, true); + }) + ExtensionManagement.registerScript("chrome://browser/content/ext-utils.js"); ExtensionManagement.registerScript("chrome://browser/content/ext-browserAction.js"); ExtensionManagement.registerScript("chrome://browser/content/ext-pageAction.js"); From d93d30fe8e160153be6519fdccad89c0bf9978dd Mon Sep 17 00:00:00 2001 From: Albert Calzaretto Date: Sun, 21 Feb 2016 11:57:19 -0500 Subject: [PATCH 2/9] Removal of init, locked, and shutdown observer variables and removal of code that used it --- browser/components/nsBrowserGlue.js | 57 +++++++++-------------------- 1 file changed, 18 insertions(+), 39 deletions(-) diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index 4b2d9558dfde8..135a9f19eb383 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -250,9 +250,6 @@ function BrowserGlue() { BrowserGlue.prototype = { _saveSession: false, - _isPlacesInitObserver: false, - _isPlacesLockedObserver: false, - _isPlacesShutdownObserver: false, _isPlacesDatabaseLocked: false, _migrationImportsDefaultBookmarks: false, @@ -347,25 +344,11 @@ BrowserGlue.prototype = { case "places-init-complete": if (!this._migrationImportsDefaultBookmarks) this._initPlaces(false); - - Services.obs.removeObserver(this, "places-init-complete"); - this._isPlacesInitObserver = false; - // no longer needed, since history was initialized completely. - Services.obs.removeObserver(this, "places-database-locked"); - this._isPlacesLockedObserver = false; break; case "places-database-locked": this._isPlacesDatabaseLocked = true; - // Stop observing, so further attempts to load history service - // will not show the prompt. - Services.obs.removeObserver(this, "places-database-locked"); - this._isPlacesLockedObserver = false; break; case "places-shutdown": - if (this._isPlacesShutdownObserver) { - Services.obs.removeObserver(this, "places-shutdown"); - this._isPlacesShutdownObserver = false; - } // places-shutdown is fired when the profile is about to disappear. this._onPlacesShutdown(); break; @@ -597,30 +580,29 @@ BrowserGlue.prototype = { ,"weave:engine:clients:display-uri" ,"session-save" ,"places-init-complete" + ,"places-database-locked" + ,"distribution-customization-complete" + ,"places-shutdown" + ,"handle-xul-text-link" + ,"profile-before-change" +#ifdef MOZ_SERVICES_HEALTHREPORT + ,"keyword-search" +#endif + ,"browser-search-engine-modified" + ,"browser-search-service" + ,"restart-in-safe-mode" + ,"flash-plugin-hang" + ,"xpi-signature-changed" + ,"autocomplete-did-enter-text" ].forEach(topic => { os.addObserver(this, topic, true); }) - this._isPlacesInitObserver = true; - os.addObserver(this, "places-database-locked", true); - this._isPlacesLockedObserver = true; - os.addObserver(this, "distribution-customization-complete", true); - os.addObserver(this, "places-shutdown", true); - this._isPlacesShutdownObserver = true; - os.addObserver(this, "handle-xul-text-link", true); - os.addObserver(this, "profile-before-change", true); -#ifdef MOZ_SERVICES_HEALTHREPORT - os.addObserver(this, "keyword-search", true); -#endif - [ "browser-search-engine-modified", - "browser-search-service", - "restart-in-safe-mode", - "flash-plugin-hang", - "xpi-signature-changed", - "autocomplete-did-enter-text" + + [ ].forEach(topic => { os.addObserver(this, topic, true); }) - + ExtensionManagement.registerScript("chrome://browser/content/ext-utils.js"); ExtensionManagement.registerScript("chrome://browser/content/ext-browserAction.js"); ExtensionManagement.registerScript("chrome://browser/content/ext-pageAction.js"); @@ -663,10 +645,7 @@ BrowserGlue.prototype = { this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); delete this._bookmarksBackupIdleTime; } - if (this._isPlacesInitObserver) - os.removeObserver(this, "places-init-complete"); - if (this._isPlacesLockedObserver) - os.removeObserver(this, "places-database-locked"); + if (this._isPlacesShutdownObserver) os.removeObserver(this, "places-shutdown"); os.removeObserver(this, "handle-xul-text-link"); From 35d946351c69d1270aab81448f9aaf10852dc0e7 Mon Sep 17 00:00:00 2001 From: Albert Calzaretto Date: Sun, 21 Feb 2016 12:08:46 -0500 Subject: [PATCH 3/9] Removed 'observers' cleanup in dispose --- browser/components/nsBrowserGlue.js | 40 +---------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index 135a9f19eb383..525c466bd021e 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -598,10 +598,6 @@ BrowserGlue.prototype = { os.addObserver(this, topic, true); }) - [ - ].forEach(topic => { - os.addObserver(this, topic, true); - }) ExtensionManagement.registerScript("chrome://browser/content/ext-utils.js"); ExtensionManagement.registerScript("chrome://browser/content/ext-browserAction.js"); @@ -626,44 +622,10 @@ BrowserGlue.prototype = { // cleanup (called on application shutdown) _dispose: function BG__dispose() { let os = Services.obs; - os.removeObserver(this, "notifications-open-settings"); - os.removeObserver(this, "prefservice:after-app-defaults"); - os.removeObserver(this, "final-ui-startup"); - os.removeObserver(this, "sessionstore-windows-restored"); - os.removeObserver(this, "browser:purge-session-history"); - os.removeObserver(this, "quit-application-requested"); - os.removeObserver(this, "quit-application-granted"); - os.removeObserver(this, "restart-in-safe-mode"); -#ifdef OBSERVE_LASTWINDOW_CLOSE_TOPICS - os.removeObserver(this, "browser-lastwindow-close-requested"); - os.removeObserver(this, "browser-lastwindow-close-granted"); -#endif - os.removeObserver(this, "weave:service:ready"); - os.removeObserver(this, "weave:engine:clients:display-uri"); - os.removeObserver(this, "session-save"); if (this._bookmarksBackupIdleTime) { this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); delete this._bookmarksBackupIdleTime; - } - - if (this._isPlacesShutdownObserver) - os.removeObserver(this, "places-shutdown"); - os.removeObserver(this, "handle-xul-text-link"); - os.removeObserver(this, "profile-before-change"); -#ifdef MOZ_SERVICES_HEALTHREPORT - os.removeObserver(this, "keyword-search"); -#endif - os.removeObserver(this, "browser-search-engine-modified"); - try { - os.removeObserver(this, "browser-search-service"); - // may have already been removed by the observer - } catch (ex) {} -#ifdef NIGHTLY_BUILD - Services.prefs.removeObserver(POLARIS_ENABLED, this); -#endif - os.removeObserver(this, "flash-plugin-hang"); - os.removeObserver(this, "xpi-signature-changed"); - os.removeObserver(this, "autocomplete-did-enter-text"); + } }, _onAppDefaults: function BG__onAppDefaults() { From 93c9617d4ef2e63909fd5637a21be8c9c0dfef53 Mon Sep 17 00:00:00 2001 From: Albert Calzaretto Date: Sun, 21 Feb 2016 12:10:31 -0500 Subject: [PATCH 4/9] Removal of dispose --- browser/components/nsBrowserGlue.js | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index 525c466bd021e..dcc177dabe5f4 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -398,12 +398,6 @@ BrowserGlue.prototype = { } } break; - case "profile-before-change": - // Any component depending on Places should be finalized in - // _onPlacesShutdown. Any component that doesn't need to act after - // the UI has gone should be finalized in _onQuitApplicationGranted. - this._dispose(); - break; case "keyword-search": // This notification is broadcast by the docshell when it "fixes up" a // URI that it's been asked to load into a keyword search. @@ -618,16 +612,7 @@ BrowserGlue.prototype = { this._flashHangCount = 0; this._firstWindowReady = new Promise(resolve => this._firstWindowLoaded = resolve); }, - - // cleanup (called on application shutdown) - _dispose: function BG__dispose() { - let os = Services.obs; - if (this._bookmarksBackupIdleTime) { - this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); - delete this._bookmarksBackupIdleTime; - } - }, - + _onAppDefaults: function BG__onAppDefaults() { // apply distribution customizations (prefs) // other customizations are applied in _finalUIStartup() @@ -1791,13 +1776,12 @@ BrowserGlue.prototype = { */ _onPlacesShutdown: function BG__onPlacesShutdown() { PageThumbs.uninit(); - if (this._bookmarksBackupIdleTime) { this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); delete this._bookmarksBackupIdleTime; } }, - +`` /** * If a backup for today doesn't exist, this creates one. */ From b0b19c861b9a5a96c61c625735c22f78e3e06f24 Mon Sep 17 00:00:00 2001 From: Albert Calzaretto Date: Mon, 22 Feb 2016 13:10:01 -0500 Subject: [PATCH 5/9] Slight changes, still not working --- 836789.patch | 56 +++++++++++++++++++++++++++++ browser/components/nsBrowserGlue.js | 20 +++++++++-- test.patch | 0 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 836789.patch create mode 100644 test.patch diff --git a/836789.patch b/836789.patch new file mode 100644 index 0000000000000..aaa816d40ba1a --- /dev/null +++ b/836789.patch @@ -0,0 +1,56 @@ +commit 93c9617d4ef2e63909fd5637a21be8c9c0dfef53 +Author: Albert Calzaretto +Date: Sun Feb 21 12:10:31 2016 -0500 + + Removal of dispose + +diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js +index 525c466..dcc177d 100644 +--- a/browser/components/nsBrowserGlue.js ++++ b/browser/components/nsBrowserGlue.js +@@ -398,12 +398,6 @@ BrowserGlue.prototype = { + } + } + break; +- case "profile-before-change": +- // Any component depending on Places should be finalized in +- // _onPlacesShutdown. Any component that doesn't need to act after +- // the UI has gone should be finalized in _onQuitApplicationGranted. +- this._dispose(); +- break; + case "keyword-search": + // This notification is broadcast by the docshell when it "fixes up" a + // URI that it's been asked to load into a keyword search. +@@ -618,16 +612,7 @@ BrowserGlue.prototype = { + this._flashHangCount = 0; + this._firstWindowReady = new Promise(resolve => this._firstWindowLoaded = resolve); + }, +- +- // cleanup (called on application shutdown) +- _dispose: function BG__dispose() { +- let os = Services.obs; +- if (this._bookmarksBackupIdleTime) { +- this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); +- delete this._bookmarksBackupIdleTime; +- } +- }, +- ++ + _onAppDefaults: function BG__onAppDefaults() { + // apply distribution customizations (prefs) + // other customizations are applied in _finalUIStartup() +@@ -1791,13 +1776,12 @@ BrowserGlue.prototype = { + */ + _onPlacesShutdown: function BG__onPlacesShutdown() { + PageThumbs.uninit(); +- + if (this._bookmarksBackupIdleTime) { + this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); + delete this._bookmarksBackupIdleTime; + } + }, +- ++`` + /** + * If a backup for today doesn't exist, this creates one. + */ diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index dcc177dabe5f4..348645d8de6a8 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -252,6 +252,7 @@ BrowserGlue.prototype = { _saveSession: false, _isPlacesDatabaseLocked: false, _migrationImportsDefaultBookmarks: false, + _disposed: false _setPrefToSaveSession: function BG__setPrefToSaveSession(aForce) { if (!this._saveSession && !aForce) @@ -289,6 +290,10 @@ BrowserGlue.prototype = { // nsIObserver implementation observe: function BG_observe(subject, topic, data) { + //observers have been disposed + if (this._disposed) + return; + switch (topic) { case "notifications-open-settings": this._openPreferences("content"); @@ -398,6 +403,16 @@ BrowserGlue.prototype = { } } break; + case "profile-before-change": + // Any component depending on Places should be finalized in + // _onPlacesShutdown. Any component that doesn't need to act after + // the UI has gone should be finalized in _onQuitApplicationGranted. + if (this._bookmarksBackupIdleTime) { + this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); + delete this._bookmarksBackupIdleTime; + } + this._disposed = true; + break; case "keyword-search": // This notification is broadcast by the docshell when it "fixes up" a // URI that it's been asked to load into a keyword search. @@ -612,7 +627,7 @@ BrowserGlue.prototype = { this._flashHangCount = 0; this._firstWindowReady = new Promise(resolve => this._firstWindowLoaded = resolve); }, - + _onAppDefaults: function BG__onAppDefaults() { // apply distribution customizations (prefs) // other customizations are applied in _finalUIStartup() @@ -1776,12 +1791,13 @@ BrowserGlue.prototype = { */ _onPlacesShutdown: function BG__onPlacesShutdown() { PageThumbs.uninit(); + if (this._bookmarksBackupIdleTime) { this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); delete this._bookmarksBackupIdleTime; } }, -`` + /** * If a backup for today doesn't exist, this creates one. */ diff --git a/test.patch b/test.patch new file mode 100644 index 0000000000000..e69de29bb2d1d From f392878a202e44ba064049316646549da07735df Mon Sep 17 00:00:00 2001 From: Albert Calzaretto Date: Wed, 24 Feb 2016 10:09:52 -0500 Subject: [PATCH 6/9] Fixed syntax issue --- browser/components/nsBrowserGlue.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index 348645d8de6a8..a27ee1d4fddac 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -252,7 +252,7 @@ BrowserGlue.prototype = { _saveSession: false, _isPlacesDatabaseLocked: false, _migrationImportsDefaultBookmarks: false, - _disposed: false + _disposed: false, _setPrefToSaveSession: function BG__setPrefToSaveSession(aForce) { if (!this._saveSession && !aForce) @@ -406,7 +406,7 @@ BrowserGlue.prototype = { case "profile-before-change": // Any component depending on Places should be finalized in // _onPlacesShutdown. Any component that doesn't need to act after - // the UI has gone should be finalized in _onQuitApplicationGranted. + // the UI has gone should be finalized in _onQuitApplicationGranted. if (this._bookmarksBackupIdleTime) { this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); delete this._bookmarksBackupIdleTime; From 9e31e7352b9d914f50da75ac54a4345a8fe19321 Mon Sep 17 00:00:00 2001 From: Albert Date: Thu, 25 Feb 2016 10:32:16 -0500 Subject: [PATCH 7/9] remove patch file from git --- 836789.patch | 56 ---------------------------------------------------- 1 file changed, 56 deletions(-) delete mode 100644 836789.patch diff --git a/836789.patch b/836789.patch deleted file mode 100644 index aaa816d40ba1a..0000000000000 --- a/836789.patch +++ /dev/null @@ -1,56 +0,0 @@ -commit 93c9617d4ef2e63909fd5637a21be8c9c0dfef53 -Author: Albert Calzaretto -Date: Sun Feb 21 12:10:31 2016 -0500 - - Removal of dispose - -diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js -index 525c466..dcc177d 100644 ---- a/browser/components/nsBrowserGlue.js -+++ b/browser/components/nsBrowserGlue.js -@@ -398,12 +398,6 @@ BrowserGlue.prototype = { - } - } - break; -- case "profile-before-change": -- // Any component depending on Places should be finalized in -- // _onPlacesShutdown. Any component that doesn't need to act after -- // the UI has gone should be finalized in _onQuitApplicationGranted. -- this._dispose(); -- break; - case "keyword-search": - // This notification is broadcast by the docshell when it "fixes up" a - // URI that it's been asked to load into a keyword search. -@@ -618,16 +612,7 @@ BrowserGlue.prototype = { - this._flashHangCount = 0; - this._firstWindowReady = new Promise(resolve => this._firstWindowLoaded = resolve); - }, -- -- // cleanup (called on application shutdown) -- _dispose: function BG__dispose() { -- let os = Services.obs; -- if (this._bookmarksBackupIdleTime) { -- this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); -- delete this._bookmarksBackupIdleTime; -- } -- }, -- -+ - _onAppDefaults: function BG__onAppDefaults() { - // apply distribution customizations (prefs) - // other customizations are applied in _finalUIStartup() -@@ -1791,13 +1776,12 @@ BrowserGlue.prototype = { - */ - _onPlacesShutdown: function BG__onPlacesShutdown() { - PageThumbs.uninit(); -- - if (this._bookmarksBackupIdleTime) { - this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); - delete this._bookmarksBackupIdleTime; - } - }, -- -+`` - /** - * If a backup for today doesn't exist, this creates one. - */ From f9ab68c802158967461ab921a2187b15174fa337 Mon Sep 17 00:00:00 2001 From: Albert Date: Thu, 25 Feb 2016 10:38:22 -0500 Subject: [PATCH 8/9] Removed test.patch --- test.patch | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test.patch diff --git a/test.patch b/test.patch deleted file mode 100644 index e69de29bb2d1d..0000000000000 From fbd73bcd043c1a3c6f75236c808dd21e88f23335 Mon Sep 17 00:00:00 2001 From: Albert Date: Thu, 25 Feb 2016 11:50:55 -0500 Subject: [PATCH 9/9] Removed 'delete this._distributionCustomier --- browser/components/nsBrowserGlue.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index a27ee1d4fddac..34bfcaef89e76 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -290,7 +290,7 @@ BrowserGlue.prototype = { // nsIObserver implementation observe: function BG_observe(subject, topic, data) { - //observers have been disposed + //observers have implcititly disposed if (this._disposed) return; @@ -362,8 +362,6 @@ BrowserGlue.prototype = { break; case "distribution-customization-complete": Services.obs.removeObserver(this, "distribution-customization-complete"); - // Customization has finished, we don't need the customizer anymore. - delete this._distributionCustomizer; break; case "browser-glue-test": // used by tests if (data == "post-update-notification") { @@ -411,7 +409,11 @@ BrowserGlue.prototype = { this._idleService.removeIdleObserver(this, this._bookmarksBackupIdleTime); delete this._bookmarksBackupIdleTime; } - this._disposed = true; + +#ifdef NIGHTLY_BUILD + Services.prefs.removeObserver(POLARIS_ENABLED, this); +#endif + this._disposed = true; break; case "keyword-search": // This notification is broadcast by the docshell when it "fixes up" a