Bug 1356569 - Remove addObserver's last parameter when it is false, rs=Fallen.
authorFlorian Quèze <florian@queze.net>
Sun, 19 Nov 2017 10:54:56 +0100
changeset 29485 9992e10b341b3c91de991878055e0222e2c27f6f
parent 29484 21f2508f16a2268aa2c53400705c9bf3dc0b7f9d
child 29486 53145b875f09aa860f1593b9260b0bb79344b66d
push id2108
push userclokep@gmail.com
push dateMon, 22 Jan 2018 17:53:55 +0000
treeherdercomm-beta@c44930d8ad9b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersFallen
bugs1356569
Bug 1356569 - Remove addObserver's last parameter when it is false, rs=Fallen.
chat/components/src/imAccounts.js
chat/components/src/imContacts.js
chat/components/src/imConversations.js
chat/components/src/imCore.js
chat/components/src/logger.js
chat/content/convbrowser.xml
chat/content/imtooltip.xml
chat/modules/imContentSink.jsm
chat/modules/imSmileys.jsm
chat/modules/imTextboxUtils.jsm
chat/modules/socket.jsm
chat/protocols/irc/irc.js
chat/protocols/twitter/twitter.js
editor/ui/composer/content/editingOverlay.js
editor/ui/composer/content/editor.js
editor/ui/composer/content/pref-editing.js
im/components/ibConvStatsService.js
im/components/ibDockBadge.js
im/components/mintrayr/content/mintrayr.js
im/content/account.js
im/content/accountWizard.js
im/content/accounts.js
im/content/blist.js
im/content/convZoom.js
im/content/conversation.xml
im/content/engineManager.js
im/content/extensions.js
im/content/preferences/advanced.js
im/content/preferences/messagestyle.js
im/content/tabbrowser.xml
im/content/viewlog.js
im/modules/ibCore.jsm
im/modules/ibNotifications.jsm
im/modules/ibSounds.jsm
im/modules/imWindows.jsm
mail/base/content/FilterListDialog.js
mail/base/content/aboutDialog-appUpdater.js
mail/base/content/mail-offline.js
mail/base/content/mailCore.js
mail/base/content/msgHdrViewOverlay.js
mail/base/content/msgMail3PaneWindow.js
mail/base/content/search.xml
mail/base/content/specialTabs.js
mail/base/content/tabmail.xml
mail/base/content/toolbarIconColor.js
mail/base/modules/mailInstrumentation.js
mail/base/modules/sessionStoreManager.js
mail/components/compose/content/MsgComposeCommands.js
mail/components/im/content/chat-messenger-overlay.js
mail/components/im/content/imAccountWizard.js
mail/components/im/content/imAccounts.js
mail/components/im/content/imStatusSelector.js
mail/components/im/content/imconversation.xml
mail/components/im/modules/chatHandler.jsm
mail/components/im/modules/chatNotifications.jsm
mail/components/im/modules/index_im.js
mail/components/mailGlue.js
mail/components/migration/content/migration.js
mail/components/newmailaccount/content/accountProvisionerTab.js
mail/components/preferences/applications.js
mail/components/preferences/compose.js
mail/components/preferences/cookies.js
mail/components/preferences/messagestyle.js
mail/components/preferences/permissions.js
mail/components/search/content/searchCommon.js
mail/test/mozmill/cloudfile/test-cloudfile-backend-hightail.js
mail/test/mozmill/content-tabs/test-plugin-crashing.js
mail/test/mozmill/folder-display/test-columns.js
mail/test/mozmill/override-main-menu-collapse/test-override-mainmenu-collapse.js
mail/test/mozmill/shared-modules/test-content-tab-helpers.js
mail/test/mozmill/shared-modules/test-window-helpers.js
mail/test/mozmill/startup-firstrun/test-menubar-collapsed.js
mail/test/resources/mozmill/mozmill/extension/content/dx.js
mail/test/resources/mozmill/mozmill/extension/resource/modules/frame.js
mail/test/resources/mozmill/mozmill/extension/resource/modules/init.js
mailnews/addrbook/prefs/content/pref-directory-add.js
mailnews/addrbook/src/nsAbLDAPAutoCompleteSearch.js
mailnews/base/src/newMailNotificationService.js
mailnews/base/util/msgDBCacheManager.js
mailnews/compose/test/unit/test_sendObserver.js
mailnews/db/gloda/modules/datastore.js
mailnews/db/gloda/modules/indexer.js
mailnews/db/gloda/modules/mimemsg.js
mailnews/extensions/offline-startup/js/offlineStartup.js
mailnews/mime/src/jsmime.jsm
mailnews/mime/test/unit/test_structured_headers.js
mailnews/test/resources/logHelper.js
suite/browser/navigator.js
suite/browser/pageinfo/pageInfo.js
suite/browser/pageinfo/permissions.js
suite/browser/tabbrowser.xml
suite/browser/test/browser/browser_bug561636.js
suite/browser/test/browser/browser_pageInfo.js
suite/browser/test/browser/browser_pluginCrashCommentAndURL.js
suite/browser/test/browser/browser_pluginnotification.js
suite/browser/test/browser/browser_popupNotification.js
suite/browser/test/browser/head.js
suite/browser/urlbarBindings.xml
suite/browser/webDeveloperOverlay.js
suite/common/bindings/findbar.xml
suite/common/bindings/notification.xml
suite/common/bindings/toolbar.xml
suite/common/bookmarks/editBookmarkOverlay.js
suite/common/dataman/dataman.js
suite/common/dataman/tests/browser_dataman_basics.js
suite/common/dataman/tests/browser_dataman_callviews.js
suite/common/downloads/tests/browser/browser_nsISuiteDownloadManagerUI.js
suite/common/downloads/tests/chrome/test_action_keys_respect_focus.xul
suite/common/downloads/tests/chrome/test_basic_functionality.xul
suite/common/downloads/tests/chrome/test_cleanup_search.xul
suite/common/downloads/tests/chrome/test_clear_button_disabled.xul
suite/common/downloads/tests/chrome/test_close_download_manager.xul
suite/common/downloads/tests/chrome/test_delete_key_cancels.xul
suite/common/downloads/tests/chrome/test_delete_key_removes.xul
suite/common/downloads/tests/chrome/test_drag.xul
suite/common/downloads/tests/chrome/test_enter_dblclick_opens.xul
suite/common/downloads/tests/chrome/test_multi_select.xul
suite/common/downloads/tests/chrome/test_multiword_search.xul
suite/common/downloads/tests/chrome/test_open_properties.xul
suite/common/downloads/tests/chrome/test_removeDownload_updates_ui.xul
suite/common/downloads/tests/chrome/test_search_clearlist.xul
suite/common/downloads/tests/chrome/test_search_keys.xul
suite/common/downloads/tests/chrome/test_select_all.xul
suite/common/downloads/tests/chrome/test_space_key_pauses_resumes.xul
suite/common/downloads/tests/chrome/test_space_key_retries.xul
suite/common/downloads/tests/chrome/test_ui_stays_open_on_alert_clickback.xul
suite/common/history/tree.xml
suite/common/permissions/cookieViewer.js
suite/common/places/browserPlacesViews.js
suite/common/places/nsPlacesAutoComplete.js
suite/common/places/tests/browser/browser_library_views_liveupdate.js
suite/common/places/tests/browser/head.js
suite/common/places/tests/chrome/test_bug549491.xul
suite/common/places/tests/chrome/test_treeview_date.xul
suite/common/places/tests/head_common.js
suite/common/places/tests/unit/test_PUIU_makeTransaction.js
suite/common/places/tests/unit/test_browserGlue_corrupt.js
suite/common/places/tests/unit/test_browserGlue_corrupt_nobackup.js
suite/common/places/tests/unit/test_browserGlue_corrupt_nobackup_default.js
suite/common/places/tests/unit/test_browserGlue_migrate.js
suite/common/places/tests/unit/test_browserGlue_prefs.js
suite/common/places/tests/unit/test_browserGlue_restore.js
suite/common/places/tests/unit/test_browserGlue_smartBookmarks.js
suite/common/places/tests/unit/test_clearHistory_shutdown.js
suite/common/places/tree.xml
suite/common/pref/pref-applications.js
suite/common/pref/pref-offlineapps.js
suite/common/pref/pref-search.js
suite/common/pref/pref-sync.js
suite/common/search/engineManager.js
suite/common/search/search.xml
suite/common/sync/aboutSyncTabs.js
suite/common/tests/browser/browser_354894.js
suite/common/tests/browser/browser_448741.js
suite/common/tests/browser/browser_526613.js
suite/common/tests/browser/browser_637020.js
suite/common/tests/browser/browser_markPageAsFollowedLink.js
suite/common/tests/browser/head.js
suite/common/tests/preferences/browser_bug410900.js
suite/common/utilityOverlay.js
suite/feeds/src/FeedWriter.js
suite/feeds/src/WebContentConverter.js
suite/mailnews/commandglue.js
suite/mailnews/compose/MsgComposeCommands.js
suite/mailnews/mailTasksOverlay.js
suite/mailnews/msgHdrViewOverlay.js
suite/mailnews/msgMail3PaneWindow.js
suite/mailnews/search/FilterListDialog.js
suite/mailnews/tabmail.xml
suite/modules/DownloadTaskbarProgress.jsm
suite/profile/migration.js
suite/smile/test/browser_ApplicationQuitting.js
--- a/chat/components/src/imAccounts.js
+++ b/chat/components/src/imAccounts.js
@@ -840,17 +840,17 @@ AccountsService.prototype = {
     }
     // If the user has canceled a master password prompt, we haven't
     // been able to save any password, so the old password conversion
     // still needs to happen.
     if (gConvertingOldPasswords && !gUserCanceledMasterPasswordPrompt)
       Services.prefs.setBoolPref(kPrefConvertOldPasswords, false);
 
     this._prefObserver = this.observe.bind(this);
-    Services.prefs.addObserver(kPrefMessengerAccounts, this._prefObserver, false);
+    Services.prefs.addObserver(kPrefMessengerAccounts, this._prefObserver);
   },
 
   _observingAccountListChange: true,
   _prefObserver: null,
   observe: function(aSubject, aTopic, aData) {
     if (aTopic != "nsPref:changed" || aData != kPrefMessengerAccounts ||
        !this._observingAccountListChange)
       return;
--- a/chat/components/src/imContacts.js
+++ b/chat/components/src/imContacts.js
@@ -103,17 +103,17 @@ this.__defineGetter__("DBConn", function
   if (!gDBConnection) {
     gDBConnection = getDBConnection();
     Services.obs.addObserver(function dbClose(aSubject, aTopic, aData) {
       Services.obs.removeObserver(dbClose, aTopic);
       if (gDBConnection) {
         gDBConnection.asyncClose();
         gDBConnection = null;
       }
-    }, "profile-before-change", false);
+    }, "profile-before-change");
   }
   gDBConnWithPendingTransaction = gDBConnection;
   gDBConnection.beginTransaction();
   executeSoon(function() {
     gDBConnWithPendingTransaction.commitTransaction();
     gDBConnWithPendingTransaction = null;
   });
   return gDBConnection;
@@ -322,20 +322,20 @@ var otherContactsTag = {
       }
     };
     this._contacts = {};
     this._contactsInitialized = true;
     for (let id in this._hiddenTags) {
       let tag = this._hiddenTags[id];
       this._hideTag(tag);
     }
-    Services.obs.addObserver(this, "contact-tag-added", false);
-    Services.obs.addObserver(this, "contact-tag-removed", false);
-    Services.obs.addObserver(this, "contact-added", false);
-    Services.obs.addObserver(this, "contact-removed", false);
+    Services.obs.addObserver(this, "contact-tag-added");
+    Services.obs.addObserver(this, "contact-tag-removed");
+    Services.obs.addObserver(this, "contact-added");
+    Services.obs.addObserver(this, "contact-removed");
   },
 
   // imITag implementation
   get id() { return -1; },
   get name() { return "__others__"; },
   set name(aNewName) { throw Cr.NS_ERROR_NOT_AVAILABLE; },
   getContacts: function(aContactCount) {
     let contacts = Object.keys(this._contacts).map(id => this._contacts[id]);
--- a/chat/components/src/imConversations.js
+++ b/chat/components/src/imConversations.js
@@ -473,20 +473,20 @@ var gConversationsService;
 function ConversationsService() { gConversationsService = this; }
 ConversationsService.prototype = {
   get wrappedJSObject() { return this; },
 
   initConversations: function() {
     this._uiConv = {};
     this._uiConvByContactId = {};
     this._prplConversations = [];
-    Services.obs.addObserver(this, "account-disconnecting", false);
-    Services.obs.addObserver(this, "account-connected", false);
-    Services.obs.addObserver(this, "account-buddy-added", false);
-    Services.obs.addObserver(this, "account-buddy-removed", false);
+    Services.obs.addObserver(this, "account-disconnecting");
+    Services.obs.addObserver(this, "account-connected");
+    Services.obs.addObserver(this, "account-buddy-added");
+    Services.obs.addObserver(this, "account-buddy-removed");
   },
 
   unInitConversations: function() {
     let UIConvs = this.getUIConversations();
     for (let UIConv of UIConvs)
       UIConv.unInit();
     delete this._uiConv;
     delete this._uiConvByContactId;
--- a/chat/components/src/imCore.js
+++ b/chat/components/src/imCore.js
@@ -24,22 +24,22 @@ var NS_IOSERVICE_GOING_OFFLINE_TOPIC = "
 var NS_IOSERVICE_OFFLINE_STATUS_TOPIC = "network:offline-status-changed";
 
 function UserStatus()
 {
   this._observers = [];
 
   if (Services.prefs.getBoolPref(kPrefReportIdle))
     this._addIdleObserver();
-  Services.prefs.addObserver(kPrefReportIdle, this, false);
+  Services.prefs.addObserver(kPrefReportIdle, this);
 
   if (Services.io.offline)
     this._offlineStatusType = Ci.imIStatusInfo.STATUS_OFFLINE;
-  Services.obs.addObserver(this, NS_IOSERVICE_GOING_OFFLINE_TOPIC, false);
-  Services.obs.addObserver(this, NS_IOSERVICE_OFFLINE_STATUS_TOPIC, false);
+  Services.obs.addObserver(this, NS_IOSERVICE_GOING_OFFLINE_TOPIC);
+  Services.obs.addObserver(this, NS_IOSERVICE_OFFLINE_STATUS_TOPIC);
 }
 UserStatus.prototype = {
   __proto__: ClassInfo("imIUserStatusInfo", "User status info"),
 
   unInit: function() {
     this._observers = [];
     Services.prefs.removeObserver(kPrefReportIdle, this);
     if (this._observingIdleness)
@@ -47,22 +47,22 @@ UserStatus.prototype = {
     Services.obs.removeObserver(this, NS_IOSERVICE_GOING_OFFLINE_TOPIC);
     Services.obs.removeObserver(this, NS_IOSERVICE_OFFLINE_STATUS_TOPIC);
   },
   _observingIdleness: false,
   _addIdleObserver: function() {
     this._observingIdleness = true;
     this._idleService =
       Cc["@mozilla.org/widget/idleservice;1"].getService(Ci.nsIIdleService);
-    Services.obs.addObserver(this, "im-sent", false);
+    Services.obs.addObserver(this, "im-sent");
 
     this._timeBeforeIdle = Services.prefs.getIntPref(kPrefTimeBeforeIdle);
     if (this._timeBeforeIdle < 0)
       this._timeBeforeIdle = 0;
-    Services.prefs.addObserver(kPrefTimeBeforeIdle, this, false);
+    Services.prefs.addObserver(kPrefTimeBeforeIdle, this);
     if (this._timeBeforeIdle)
       this._idleService.addIdleObserver(this, this._timeBeforeIdle);
   },
   _removeIdleObserver: function() {
     if (this._timeBeforeIdle)
       this._idleService.removeIdleObserver(this, this._timeBeforeIdle);
 
     Services.prefs.removeObserver(kPrefTimeBeforeIdle, this);
@@ -242,17 +242,17 @@ CoreService.prototype = {
   _initialized: false,
   get initialized() { return this._initialized; },
   init: function() {
     if (this._initialized)
       return;
 
     initLogModule("core", this);
 
-    Services.obs.addObserver(this, kQuitApplicationGranted, false);
+    Services.obs.addObserver(this, kQuitApplicationGranted);
     this._initialized = true;
 
     Services.cmd.initCommands();
     this._protos = {};
 
     this.globalUserStatus = new UserStatus();
     this.globalUserStatus.addObserver({
       observe: function(aSubject, aTopic, aData) {
--- a/chat/components/src/logger.js
+++ b/chat/components/src/logger.js
@@ -884,24 +884,24 @@ Logger.prototype = {
         iterator.close();
       }
     }
   }),
 
   observe: function logger_observe(aSubject, aTopic, aData) {
     switch (aTopic) {
     case "profile-after-change":
-      Services.obs.addObserver(this, "final-ui-startup", false);
+      Services.obs.addObserver(this, "final-ui-startup");
       break;
     case "final-ui-startup":
       Services.obs.removeObserver(this, "final-ui-startup");
       ["new-text", "conversation-closed", "conversation-left-chat",
        "account-connected", "account-disconnected",
        "account-buddy-status-changed"].forEach(function(aEvent) {
-        Services.obs.addObserver(this, aEvent, false);
+        Services.obs.addObserver(this, aEvent);
       }, this);
       break;
     case "new-text":
       if (!aSubject.noLog) {
         let log = getLogWriter(aSubject.conversation);
         log.logMessage(aSubject);
       }
       break;
--- a/chat/content/convbrowser.xml
+++ b/chat/content/convbrowser.xml
@@ -227,17 +227,17 @@
                 readonly="true"/>
       <field name="magicCopyInitialized">false</field>
 
       <method name="initMagicCopy">
         <body>
           <![CDATA[
           if (this.magicCopyInitialized)
             return;
-          Services.prefs.addObserver(this.magicCopyPref, this, false);
+          Services.prefs.addObserver(this.magicCopyPref, this);
           this.magicCopyInitialized = true;
           if (this.magicCopyEnabled)
             this.enableMagicCopy();
           ]]>
         </body>
       </method>
 
       <method name="uninitMagicCopy">
--- a/chat/content/imtooltip.xml
+++ b/chat/content/imtooltip.xml
@@ -207,17 +207,17 @@
          // requestBuddyInfo that is suitable for displaying inside a
          // tooltip (e.g. too many objects, or <img> and <a> tags),
          // so we only use it for JS prpls.
          // This is a terrible, terrible hack to work around the fact that
          // ClassInfo.implementationLanguage has gone.
          if (!aAccount.prplAccount.wrappedJSObject)
            return;
          this.observedUserInfo = aObservedName;
-         Services.obs.addObserver(this, "user-info-received", false);
+         Services.obs.addObserver(this, "user-info-received");
          aAccount.requestBuddyInfo(aObservedName);
        ]]>
        </body>
      </method>
 
      <method name="updateTooltipFromBuddy">
        <parameter name="aBuddy"/>
        <body>
--- a/chat/modules/imContentSink.jsm
+++ b/chat/modules/imContentSink.jsm
@@ -165,17 +165,17 @@ var kModePref = "messenger.options.filte
 var kModes = [kStrictMode, kStandardMode, kPermissiveMode];
 
 var gGlobalRuleset = null;
 
 function initGlobalRuleset()
 {
   gGlobalRuleset = newRuleset();
 
-  Services.prefs.addObserver(kModePref, styleObserver, false);
+  Services.prefs.addObserver(kModePref, styleObserver);
 }
 
 var styleObserver = {
   observe: function so_observe(aObject, aTopic, aMsg) {
     if (aTopic != "nsPref:changed" || aMsg != kModePref)
       throw "bad notification";
 
     if (!gGlobalRuleset)
--- a/chat/modules/imSmileys.jsm
+++ b/chat/modules/imSmileys.jsm
@@ -26,17 +26,17 @@ var kThemeFile = "theme.js";
 this.__defineGetter__("gTheme", function() {
   delete this.gTheme;
   gPrefObserver.init();
   return this.gTheme = getTheme();
 });
 
 var gPrefObserver = {
   init: function po_init() {
-    Services.prefs.addObserver(kEmoticonsThemePref, gPrefObserver, false);
+    Services.prefs.addObserver(kEmoticonsThemePref, gPrefObserver);
   },
 
   observe: function so_observe(aObject, aTopic, aMsg) {
     if (aTopic != "nsPref:changed" || aMsg != kEmoticonsThemePref)
       throw "bad notification";
 
     gTheme = getTheme();
   }
--- a/chat/modules/imTextboxUtils.jsm
+++ b/chat/modules/imTextboxUtils.jsm
@@ -43,17 +43,17 @@ var MessageFormat = {
       "font.language.group",
       "font.default." + langGroup,
       "font.name." + fontGroup + "." + langGroup,
       "font.size.variable." + langGroup,
       "browser.display.foreground_color",
       "browser.display.use_system_colors"
     ];
     for (let name of this._observedPrefs)
-      Services.prefs.addObserver(name, this, false);
+      Services.prefs.addObserver(name, this);
   },
   unregisterObservers: function mf_unregisterObservers() {
     for (let name of this._observedPrefs)
       Services.prefs.removeObserver(name, this);
     this._observedPrefs = [];
   },
   observe: function(aSubject, aTopic, aMsg) {
     this.getValues();
@@ -106,17 +106,17 @@ var MessageFormat = {
       this.unregisterObservers();
   }
 };
 
 var TextboxSize = {
   _textboxAutoResizePrefName: "messenger.conversations.textbox.autoResize",
   get autoResize() {
     delete this.autoResize;
-    Services.prefs.addObserver(this._textboxAutoResizePrefName, this, false);
+    Services.prefs.addObserver(this._textboxAutoResizePrefName, this);
     return this.autoResize =
       Services.prefs.getBoolPref(this._textboxAutoResizePrefName);
   },
   observe: function(aSubject, aTopic, aMsg) {
     if (aTopic == "nsPref:changed" && aMsg == this._textboxAutoResizePrefName)
       this.autoResize = Services.prefs.getBoolPref(aMsg);
   }
 };
@@ -143,17 +143,17 @@ var TextboxSpellChecker = {
   },
 
   _textboxes: [],
   registerTextbox: function tsc_registerTextbox(aTextbox) {
     if (!this._textboxes.includes(aTextbox))
       this._textboxes.push(aTextbox);
 
     if (this._textboxes.length == 1) {
-      Services.prefs.addObserver(this._spellCheckPrefName, this, false);
+      Services.prefs.addObserver(this._spellCheckPrefName, this);
       this.getValue();
     }
 
     this.applyValue(aTextbox);
   },
   unregisterTextbox: function tsc_unregisterTextbox(aTextbox) {
     let index = this._textboxes.indexOf(aTextbox);
     if (index != -1)
--- a/chat/modules/socket.jsm
+++ b/chat/modules/socket.jsm
@@ -144,17 +144,17 @@ var Socket = {
   // checking the certificate for them (see nsIRoutedSocketTransportService
   // in nsISocketTransportService.idl).
   connect: function(aOriginHost, aOriginPort, aSecurity, aProxy,
                     aHost = aOriginHost, aPort = aOriginPort) {
     if (Services.io.offline)
       throw Cr.NS_ERROR_FAILURE;
 
     // This won't work for Linux due to bug 758848.
-    Services.obs.addObserver(this, "wake_notification", false);
+    Services.obs.addObserver(this, "wake_notification");
 
     this.LOG("Connecting to: " + aHost + ":" + aPort);
     this.originHost = aOriginHost;
     this.originPort = aOriginPort;
     this.host = aHost;
     this.port = aPort;
     this.disconnected = false;
 
--- a/chat/protocols/irc/irc.js
+++ b/chat/protocols/irc/irc.js
@@ -270,17 +270,17 @@ var GenericIRCConversation = {
     let longestLineLength =
       Math.max.apply(null, aString.split("\n").map(this._account.countBytes,
                                                    this._account));
     return this.getMaxMessageLength() - longestLineLength;
   },
 
   requestCurrentWhois: function(aNick) {
     if (!this._observedNicks.length)
-      Services.obs.addObserver(this, "user-info-received", false);
+      Services.obs.addObserver(this, "user-info-received");
     this._observedNicks.push(this.normalizeNick(aNick));
     this._account.requestCurrentWhois(aNick);
   },
 
   observe: function(aSubject, aTopic, aData) {
     if (aTopic != "user-info-received")
       return;
 
--- a/chat/protocols/twitter/twitter.js
+++ b/chat/protocols/twitter/twitter.js
@@ -789,17 +789,17 @@ Account.prototype = {
     let track = this.getString("track");
     this._streamingRequest =
       this.signAndSend("https://userstream.twitter.com/1.1/user.json", null,
                        track ? [["track", track]] : [], this.openStream,
                        this.onStreamError, this);
     this._streamingRequest.responseType = "moz-chunked-text";
     this._streamingRequest.onprogress = this.onDataAvailable.bind(this);
     this.resetStreamTimeout();
-    this.prefs.addObserver("track", this, false);
+    this.prefs.addObserver("track", this);
   },
   _streamTimeout: null,
   resetStreamTimeout: function() {
     if (this._streamTimeout)
       clearTimeout(this._streamTimeout);
     // The twitter Streaming API sends a keep-alive newline every 30 seconds
     // so if we haven't received anything for 90s, we should disconnect and try
     // to reconnect.
--- a/editor/ui/composer/content/editingOverlay.js
+++ b/editor/ui/composer/content/editingOverlay.js
@@ -179,17 +179,17 @@ function EditorStartup(aUrl, aCharset)
   //  such as file-related commands, HTML Source editing, Edit Modes...
   SetupComposerWindowCommands();
 
   ShowHideToolbarButtons();
   gEditorToolbarPrefListener = new nsPrefListener(kEditorToolbarPrefs);
 
   gCSSPrefListener = new nsPrefListener(kUseCssPref);
   gReturnInParagraphPrefListener = new nsPrefListener(kCRInParagraphsPref);
-  Services.obs.addObserver(EditorCanClose, "quit-application-requested", false);
+  Services.obs.addObserver(EditorCanClose, "quit-application-requested");
 
   // Get url for editor content and load it. The editor gets instantiated by
   // the editingSession when the URL has finished loading.
   try {
     var contentViewer = GetCurrentEditorElement().markupDocumentViewer;
     contentViewer.forceCharacterSet = aCharset;
   } catch (e) {}
   EditorLoadUrl(aUrl);
--- a/editor/ui/composer/content/editor.js
+++ b/editor/ui/composer/content/editor.js
@@ -106,17 +106,17 @@ function nsPrefListener(prefName)
 // implements nsIObserver
 nsPrefListener.prototype =
 {
   domain: "",
   startup: function(prefName)
   {
     this.domain = prefName;
     try {
-      Services.prefs.addObserver(this.domain, this, false);
+      Services.prefs.addObserver(this.domain, this);
     } catch(ex) {
       dump("Failed to observe prefs: " + ex + "\n");
     }
   },
   shutdown: function()
   {
     try {
       Services.prefs.removeObserver(this.domain, this);
--- a/editor/ui/composer/content/pref-editing.js
+++ b/editor/ui/composer/content/pref-editing.js
@@ -24,22 +24,22 @@ const browserPrefsObserver =
         SetBgAndFgColors(Services.prefs.getBoolPref("browser.display.use_system_colors"))
     }
   }
 };
 
 function Startup()
 {
   // Add browser prefs observers
-  Services.prefs.addObserver("browser.display.use_system_colors", browserPrefsObserver, false);
-  Services.prefs.addObserver("browser.display.foreground_color", browserPrefsObserver, false);
-  Services.prefs.addObserver("browser.display.background_color", browserPrefsObserver, false);
-  Services.prefs.addObserver("browser.anchor_color", browserPrefsObserver, false);
-  Services.prefs.addObserver("browser.active_color", browserPrefsObserver, false);
-  Services.prefs.addObserver("browser.visited_color", browserPrefsObserver, false);
+  Services.prefs.addObserver("browser.display.use_system_colors", browserPrefsObserver);
+  Services.prefs.addObserver("browser.display.foreground_color", browserPrefsObserver);
+  Services.prefs.addObserver("browser.display.background_color", browserPrefsObserver);
+  Services.prefs.addObserver("browser.anchor_color", browserPrefsObserver);
+  Services.prefs.addObserver("browser.active_color", browserPrefsObserver);
+  Services.prefs.addObserver("browser.visited_color", browserPrefsObserver);
 
   // Add event listener so we can remove our observers
   window.addEventListener("unload", WindowOnUnload, {capture: false, once: true});
   UpdateDependent(document.getElementById("editor.use_custom_colors").value);
 }
 
 function GetColorAndUpdatePref(aType, aButtonID)
 {
--- a/im/components/ibConvStatsService.js
+++ b/im/components/ibConvStatsService.js
@@ -141,17 +141,17 @@ ConvStatsService.prototype = {
   _statsCacheUpdateTimer: null,
   _statsCacheFilePath: null,
 
   _init: function() {
     let contacts = Services.contacts.getContacts();
     for (let contact of contacts)
       this._addContact(contact);
     for (let notification of kNotificationsToObserve)
-      Services.obs.addObserver(this, notification, false);
+      Services.obs.addObserver(this, notification);
 
     // Read all our conversation stats from the cache.
     this._statsCacheFilePath =
       OS.Path.join(OS.Constants.Path.profileDir, "statsservicecache.json");
     OS.File.read(this._statsCacheFilePath).then((aArray) => {
       try {
         let {version: version, stats: allStats} =
           JSON.parse((new TextDecoder()).decode(aArray));
@@ -440,17 +440,17 @@ ConvStatsService.prototype = {
   // Maps prplConversation ids to their ConversationStats objects.
   _statsByPrplConvId: new Map(),
   // Maps prplConversation ids to the corresponding PossibleConversations.
   _convsByPrplConvId: new Map(),
   // These will be repositioned to reflect their new scores when a newtab is opened.
   _convsWithUpdatedStats: new Set(),
   observe: function(aSubject, aTopic, aData) {
     if (aTopic == "profile-after-change")
-      Services.obs.addObserver(this, "prpl-init", false);
+      Services.obs.addObserver(this, "prpl-init");
     else if (aTopic == "prpl-init") {
       executeSoon(() => this._init());
       Services.obs.removeObserver(this, "prpl-init");
     }
     else if (aTopic == "prpl-quit") {
       // Update the stats cache only if there was already an update scheduled.
       if (this._statsCacheUpdateTimer)
         this._cacheAllStats();
--- a/im/components/ibDockBadge.js
+++ b/im/components/ibDockBadge.js
@@ -38,18 +38,18 @@ DockBadge.prototype = {
     if (this._badgeTimer)
       this._badgeTimer.cancel();
     MacDock.badgeText = "";
   },
 
   observe: function(aSubject, aTopic, aData) {
     switch (aTopic) {
     case "profile-after-change":
-      Services.obs.addObserver(this, "unread-im-count-changed", false);
-      Services.prefs.addObserver(this._showDockBadgePrefName, this, false);
+      Services.obs.addObserver(this, "unread-im-count-changed");
+      Services.prefs.addObserver(this._showDockBadgePrefName, this);
       break;
     case "nsPref:changed":
       if (aData == this._showDockBadgePrefName) {
         if (Services.prefs.getBoolPref(aData))
           this._showUnreadCount();
         else
           this._hideUnreadCountDockBadge();
       }
--- a/im/components/mintrayr/content/mintrayr.js
+++ b/im/components/mintrayr/content/mintrayr.js
@@ -36,17 +36,17 @@ var gMinTrayR = {
 
     this.trayService =
       Components.classes['@tn123.ath.cx/trayservice;1']
                 .getService(Components.interfaces.trayITrayService);
     this.trayService.watchMinimize(window);
 
     this._prefs = Services.prefs.getBranch("extensions.mintrayr.")
                                 .QueryInterface(Components.interfaces.nsIPrefBranch);
-    this._prefs.addObserver("alwaysShowTrayIcon", this, false);
+    this._prefs.addObserver("alwaysShowTrayIcon", this);
 
     // Add a listener to minimize the window on startup once it has been
     // fully created if the corresponding pref is set.
     if (this._prefs.getBoolPref("startMinimized")) {
       window.addEventListener("focus", () => {
         if (gMinTrayR._prefs.getIntPref("minimizeon"))
           gMinTrayR.minimize();
         else
--- a/im/content/account.js
+++ b/im/content/account.js
@@ -55,17 +55,17 @@ var account = {
     let proxyVisible = this.proto.usePurpleProxy;
     if (proxyVisible) {
       this.proxy = this.account.proxyInfo;
       this.displayProxyDescription();
     }
     document.getElementById("proxyBox").hidden = !proxyVisible;
     document.getElementById("proxySeparator").hidden = !proxyVisible;
 
-    Services.obs.addObserver(this, "prpl-quit", false);
+    Services.obs.addObserver(this, "prpl-quit");
     window.addEventListener("unload", this.unload);
   },
   unload: function account_unload() {
     Services.obs.removeObserver(account, "prpl-quit");
   },
   observe: function account_observe(aObject, aTopic, aData) {
     if (aTopic == "prpl-quit") {
       // libpurple is being uninitialized. Close this dialog.
--- a/im/content/accountWizard.js
+++ b/im/content/accountWizard.js
@@ -32,17 +32,17 @@ var accountWizard = {
       item.build(proto, desc);
     }
 
     if (topProtoList.itemCount < 2)
       document.getElementById("accountWizard").currentPage = "accountprotocol";
 
     topProtoList.selectedIndex = -1;
 
-    Services.obs.addObserver(this, "prpl-quit", false);
+    Services.obs.addObserver(this, "prpl-quit");
     window.addEventListener("unload", this.unload);
   },
   unload: function aw_unload() {
     Services.obs.removeObserver(accountWizard, "prpl-quit");
   },
   observe: function am_observe(aObject, aTopic, aData) {
     if (aTopic == "prpl-quit") {
       // libpurple is being uninitialized. We can't create any new
--- a/im/content/accounts.js
+++ b/im/content/accounts.js
@@ -38,17 +38,17 @@ var gAccountManager = {
       for (let acc of this.getAccounts()) {
         var elt = document.createElement("richlistitem");
         this.accountList.appendChild(elt);
         elt.build(acc);
         if (!defaultID && acc.firstConnectionState == acc.FIRST_CONNECTION_CRASHED)
           defaultID = acc.id;
       }
       for (let event of events)
-        Services.obs.addObserver(this, event, false);
+        Services.obs.addObserver(this, event);
       if (!this.accountList.getRowCount())
         // This is horrible, but it works. Otherwise (at least on mac)
         // the wizard is not centered relatively to the account manager
         setTimeout(function() { gAccountManager.new(); }, 0);
       else {
         // we have accounts, show the list
         document.getElementById("accountsDesk").selectedIndex = 1;
 
--- a/im/content/blist.js
+++ b/im/content/blist.js
@@ -868,19 +868,19 @@ var buddyList = {
           convElt.build(conv);
         }
       }
       buddyList.convBox._updateListConvCount();
     }
     new MutationObserver(buddyList.convBox._updateListConvCount)
       .observe(buddyList.convBox, {childList: true});
 
-    prefBranch.addObserver(showOfflineBuddiesPref, buddyList, false);
+    prefBranch.addObserver(showOfflineBuddiesPref, buddyList);
     for (let event of events)
-      Services.obs.addObserver(buddyList, event, false);
+      Services.obs.addObserver(buddyList, event);
 
     this.addEventListener("unload", buddyList.unload);
   },
   _displayedGroups: [],
   _getGroupIndex: function(aName) {
     let start = 0;
     let end = this._displayedGroups.length;
     let name = aName.toLowerCase();
--- a/im/content/convZoom.js
+++ b/im/content/convZoom.js
@@ -11,17 +11,17 @@ var FullZoom = {
     window.addEventListener("DOMMouseScroll", FullZoom.handleMouseScrolled);
     window.addEventListener("unload", FullZoom.destroy);
     let conversations = document.getElementById("conversations");
     if (conversations) {
       conversations.tabContainer
                    .addEventListener("select", FullZoom.applyPrefValue);
     }
 
-    Services.prefs.addObserver(FullZoom.prefName, FullZoom, false);
+    Services.prefs.addObserver(FullZoom.prefName, FullZoom);
     FullZoom.applyPrefValue();
   },
 
   destroy: function FullZoom_destroy() {
     Services.prefs.removeObserver(FullZoom.prefName, FullZoom);
     window.removeEventListener("DOMMouseScroll", FullZoom.handleMouseScrolled);
   },
 
--- a/im/content/conversation.xml
+++ b/im/content/conversation.xml
@@ -90,17 +90,17 @@
             }
           }.bind(this)).observe(this.getElt("splitter"),
                                 {attributes: true, attributeOldValue: true,
                                  attributeFilter: ["state"]});
 
           var browser = this.browser;
           browser.addEventListener("keypress", this.browserKeyPress);
           browser.addEventListener("dblclick", this.browserDblClick.bind(this));
-          Services.obs.addObserver(this, "conversation-loaded", false);
+          Services.obs.addObserver(this, "conversation-loaded");
         ]]>
       </constructor>
 
       <destructor>
         <![CDATA[
           this.destroy();
         ]]>
       </destructor>
--- a/im/content/engineManager.js
+++ b/im/content/engineManager.js
@@ -13,17 +13,17 @@ var gEngineManagerDialog = {
   init: function engineManager_init() {
     gEngineView = new EngineView(new EngineStore());
 
     var tree = document.getElementById("engineList");
     tree.view = gEngineView;
 
     var os = Cc["@mozilla.org/observer-service;1"].
              getService(Ci.nsIObserverService);
-    os.addObserver(this, "browser-search-engine-modified", false);
+    os.addObserver(this, "browser-search-engine-modified");
   },
 
   observe: function engineManager_observe(aEngine, aTopic, aVerb) {
     if (aTopic == "browser-search-engine-modified") {
       aEngine.QueryInterface(Ci.nsISearchEngine)
       switch (aVerb) {
       case "engine-added":
         gEngineView._engineStore.addEngine(aEngine);
--- a/im/content/extensions.js
+++ b/im/content/extensions.js
@@ -5,20 +5,20 @@
 var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/AddonManager.jsm");
 Cu.import("resource://gre/modules/PluralForm.jsm");
 
 var addonsRegister = {
   onload: function () {
-    Services.obs.addObserver(addonsRegister, "addon-install-disabled", false);
-    Services.obs.addObserver(addonsRegister, "addon-install-blocked", false);
-    Services.obs.addObserver(addonsRegister, "addon-install-failed", false);
-    Services.obs.addObserver(addonsRegister, "addon-install-complete", false);
+    Services.obs.addObserver(addonsRegister, "addon-install-disabled");
+    Services.obs.addObserver(addonsRegister, "addon-install-blocked");
+    Services.obs.addObserver(addonsRegister, "addon-install-failed");
+    Services.obs.addObserver(addonsRegister, "addon-install-complete");
 
     window.addEventListener("unload", addonsRegister.onunload, {once: true});
 
     let win = document.getElementById("dummychromebrowser").contentWindow;
     let open = win.open;
     win.open = function(aUrl) {
       let uri = Services.io.newURI(aUrl);
 
--- a/im/content/preferences/advanced.js
+++ b/im/content/preferences/advanced.js
@@ -32,17 +32,17 @@ var gAdvancedPane = {
 
     this.updateConnectionGroupbox();
 #ifdef MOZ_UPDATER
     let onUnload = function () {
       window.removeEventListener("unload", onUnload);
       Services.prefs.removeObserver("app.update.", this);
     }.bind(this);
     window.addEventListener("unload", onUnload);
-    Services.prefs.addObserver("app.update.", this, false);
+    Services.prefs.addObserver("app.update.", this);
     this.updateReadPrefs();
 #endif
 
     let bundlePrefs = document.getElementById("bundlePreferences");
 
     // Notify observers that the UI is now ready
     Services.obs.notifyObservers(window, "advanced-pane-loaded", null);
   },
--- a/im/content/preferences/messagestyle.js
+++ b/im/content/preferences/messagestyle.js
@@ -159,17 +159,17 @@ var previewObserver = {
 
     this.reloadPreview();
     document.getElementById("previewDeck").selectedIndex = 1;
   },
 
   reloadPreview: function() {
     this.browser.init(this.conv);
     this.browser._theme = this.theme;
-    Services.obs.addObserver(this, "conversation-loaded", false);
+    Services.obs.addObserver(this, "conversation-loaded");
   },
 
   observe: function(aSubject, aTopic, aData) {
     if (aTopic != "conversation-loaded" || aSubject != this.browser)
       return;
 
     // We want to avoid the convbrowser trying to scroll to the last
     // added message, as that causes the entire pref pane to jump up
--- a/im/content/tabbrowser.xml
+++ b/im/content/tabbrowser.xml
@@ -1483,18 +1483,18 @@
           window.addEventListener("deactivate", this._windowDeactivateHandler);
           window.addEventListener("activate", this._windowActivateHandler);
 
           var uniqueId = "panel" + Date.now();
           this.mCurrentTab.linkedTabPanel.id = uniqueId;
           this.mCurrentTab.linkedPanel = uniqueId;
           this.mCurrentTab._tPos = 0;
 
-          Services.prefs.addObserver("browser.tabs.autoHide", this._prefObserver, false);
-          Services.prefs.addObserver("messenger.conversations.useSeparateWindowsForMUCs", this._prefObserver, false);
+          Services.prefs.addObserver("browser.tabs.autoHide", this._prefObserver);
+          Services.prefs.addObserver("messenger.conversations.useSeparateWindowsForMUCs", this._prefObserver);
         ]]>
       </constructor>
 
       <destructor>
         <![CDATA[
           document.removeEventListener("keypress", this._keyEventHandler);
           window.removeEventListener("sizemodechange", this);
           window.removeEventListener("deactivate", this._windowDeactivateHandler);
@@ -1708,17 +1708,17 @@
           } catch (e) {
           }
           try {
             this.mCloseButtons = pb2.getIntPref("browser.tabs.closeButtons");
           } catch (e) {
           }
 
           pb2.addObserver("browser.tabs.closeButtons",
-                          this._prefObserver, false);
+                          this._prefObserver);
 
           window.addEventListener("resize", this);
 #ifdef XP_MACOSX
 
           if (!("WindowDraggingElement" in window))
             Components.utils.import("resource://gre/modules/WindowDraggingUtils.jsm");
           let draghandle = new WindowDraggingElement(this.mTabstrip, window);
           draghandle.mouseDownCheck =
--- a/im/content/viewlog.js
+++ b/im/content/viewlog.js
@@ -89,17 +89,17 @@ var logWindow = {
         findbar.browser = browser;
         FullZoom.applyPrefValue();
         if (this.pendingLoad) {
           browser._conv = aConv;
           return;
         }
         browser.init(aConv);
         this.pendingLoad = true;
-        Services.obs.addObserver(this, "conversation-loaded", false);
+        Services.obs.addObserver(this, "conversation-loaded");
       });
     }
     else {
       // Legacy text log.
       deck.selectedIndex = 0;
       let browser = document.getElementById("text-browser");
       findbar.browser = browser;
       FullZoom.applyPrefValue();
--- a/im/modules/ibCore.jsm
+++ b/im/modules/ibCore.jsm
@@ -87,17 +87,17 @@ var Core = {
         Cc[WINTASKBAR_CONTRACTID].getService(Ci.nsIWinTaskbar).available) {
       let temp = {};
       Cu.import("resource:///modules/ibWinJumpList.jsm", temp);
       temp.WinJumpList.init();
     }
 #endif
 
     this._events.forEach(function (aTopic) {
-      Services.obs.addObserver(Core, aTopic, false);
+      Services.obs.addObserver(Core, aTopic);
     });
 
     let self = this;
     Services.cmd.registerCommand({
       name: "about",
       get helpString() { return self.bundle("aboutCommand.help"); },
       usageContext: Ci.imICommand.CMD_CONTEXT_ALL,
       priority: Ci.imICommand.CMD_PRIORITY_DEFAULT,
--- a/im/modules/ibNotifications.jsm
+++ b/im/modules/ibNotifications.jsm
@@ -66,17 +66,17 @@ var Notifications = {
 
     // Finally show the notification!
     Components.classes["@mozilla.org/alerts-service;1"]
               .getService(Components.interfaces.nsIAlertsService)
               .showAlertNotification(icon, name, messageText, true, "", observer);
   },
 
   init: function() {
-    Services.obs.addObserver(Notifications, "new-text", false);
+    Services.obs.addObserver(Notifications, "new-text");
   },
 
   _notificationPrefName: "messenger.options.notifyOfNewMessages",
   observe: function(aSubject, aTopic, aData) {
     if (aTopic != "new-text")
       return;
 
     if (!aSubject.incoming || aSubject.system ||
--- a/im/modules/ibSounds.jsm
+++ b/im/modules/ibSounds.jsm
@@ -53,11 +53,11 @@ var Sounds = {
 
     default:
       throw "bad notification";
     }
   },
 
   init: function() {
     for (let topic of this.soundEvents)
-      Services.obs.addObserver(this, topic, false);
+      Services.obs.addObserver(this, topic);
   }
 };
--- a/im/modules/imWindows.jsm
+++ b/im/modules/imWindows.jsm
@@ -100,17 +100,17 @@ var Conversations = {
     }
     this.unreadCount = 0;
   },
 
   init: function() {
     let os = Services.obs;
     ["new-text",
      "new-ui-conversation"].forEach(function (aTopic) {
-      os.addObserver(this, aTopic, false);
+      os.addObserver(this, aTopic);
     }, this);
   },
 
   _pendingConversations: null,
   observe: function(aSubject, aTopic, aMsg) {
     if (aTopic == "new-text") {
       if (aSubject.incoming && !aSubject.system &&
           (!aSubject.conversation.isChat || aSubject.containsNick)) {
--- a/mail/base/content/FilterListDialog.js
+++ b/mail/base/content/FilterListDialog.js
@@ -113,17 +113,17 @@ function onLoad()
     gRunFiltersButton = document.getElementById("runFiltersButton");
     gFilterBundle     = document.getElementById("bundle_filter");
 
     updateButtons();
 
     processWindowArguments(window.arguments[0]);
 
     Services.obs.addObserver(filterEditorQuitObserver,
-                             "quit-application-requested", false);
+                             "quit-application-requested");
 }
 
 /**
  * Processes arguments sent to this dialog when opened or refreshed.
  *
  * @param aArguments  An object having members representing the arguments.
  *                    { arg1: value1, arg2: value2, ... }
  */
--- a/mail/base/content/aboutDialog-appUpdater.js
+++ b/mail/base/content/aboutDialog-appUpdater.js
@@ -389,17 +389,17 @@ appUpdater.prototype =
           } else if (status == "downloading") {
             // We've fallen back to downloading the full update because the
             // partial update failed to get staged in the background.
             // Therefore we need to keep our observer.
             self.setupDownloadingUI();
             return;
           }
           Services.obs.removeObserver(selectPanelOnUpdate, "update-staged");
-        }, "update-staged", false);
+        }, "update-staged");
       } else {
         this.selectPanel("apply");
       }
       break;
     default:
       this.removeDownloadListener();
       this.selectPanel("downloadFailed");
       break;
--- a/mail/base/content/mail-offline.js
+++ b/mail/base/content/mail-offline.js
@@ -6,17 +6,17 @@
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 var MailOfflineMgr = {
   offlineManager: null,
   offlineBundle: null,
 
   init: function()
   {
-    Services.obs.addObserver(this, "network:offline-status-changed", false);
+    Services.obs.addObserver(this, "network:offline-status-changed");
 
     this.offlineManager = Components.classes["@mozilla.org/messenger/offline-manager;1"]
                         .getService(Components.interfaces.nsIMsgOfflineManager);
     this.offlineBundle = document.getElementById("bundle_offlinePrompts");
 
     // initialize our offline state UI
     this.updateOfflineUI(!this.isOnline());
   },
--- a/mail/base/content/mailCore.js
+++ b/mail/base/content/mailCore.js
@@ -443,17 +443,17 @@ function openAddonsMgr(aView)
         .rootTreeItem
         .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
         .getInterface(Components.interfaces.nsIDOMWindow);
       if (!emWindow || browserWin == window /* favor the current window */) {
         emWindow = aSubject;
         browserWindow = browserWin;
       }
     }
-    Services.obs.addObserver(receivePong, "EM-pong", false);
+    Services.obs.addObserver(receivePong, "EM-pong");
     Services.obs.notifyObservers(null, "EM-ping", "");
     Services.obs.removeObserver(receivePong, "EM-pong");
 
     if (emWindow) {
       emWindow.loadView(aView);
       let tabmail = browserWindow.document.getElementById("tabmail");
       tabmail.switchToTab(tabmail.getBrowserForDocument(emWindow));
       emWindow.focus();
@@ -465,17 +465,17 @@ function openAddonsMgr(aView)
 
 
   if (aView) {
     // This must be a new load, else the ping/pong would have
     // found the window above.
     Services.obs.addObserver(function loadViewOnLoad(aSubject, aTopic, aData) {
       Services.obs.removeObserver(loadViewOnLoad, aTopic);
       aSubject.loadView(aView);
-    }, "EM-loaded", false);
+    }, "EM-loaded");
   }
 }
 
 function openActivityMgr()
 {
   Components.classes['@mozilla.org/activity-manager-ui;1'].
     getService(Components.interfaces.nsIActivityManagerUI).show(window);
 }
--- a/mail/base/content/msgHdrViewOverlay.js
+++ b/mail/base/content/msgHdrViewOverlay.js
@@ -218,18 +218,18 @@ function OnLoadMsgHeaderPane()
 
   // Load any preferences that at are global with regards to
   // displaying a message...
   gMinNumberOfHeaders = Services.prefs.getIntPref("mailnews.headers.minNumHeaders");
   gShowCondensedEmailAddresses = Services.prefs.getBoolPref("mail.showCondensedAddresses");
   gHeadersShowReferences = Services.prefs.getBoolPref("mailnews.headers.showReferences");
 
   // listen to the
-  Services.prefs.addObserver("mail.showCondensedAddresses", MsgHdrViewObserver, false);
-  Services.prefs.addObserver("mailnews.headers.showReferences", MsgHdrViewObserver, false);
+  Services.prefs.addObserver("mail.showCondensedAddresses", MsgHdrViewObserver);
+  Services.prefs.addObserver("mailnews.headers.showReferences", MsgHdrViewObserver);
 
   initializeHeaderViewTables();
 
   // Add an address book listener so we can update the header view when things
   // change.
   MailServices.ab.addAddressBookListener(AddressBookListener,
                                          Components.interfaces.nsIAbListener.all);
 
--- a/mail/base/content/msgMail3PaneWindow.js
+++ b/mail/base/content/msgMail3PaneWindow.js
@@ -370,19 +370,18 @@ function OnLoadMessenger()
 
     document.documentElement.setAttribute("width", defaultWidth);
     document.documentElement.setAttribute("height", defaultHeight);
     // Make sure we're safe at the left/top edge of screen
     document.documentElement.setAttribute("screenX", screen.availLeft);
     document.documentElement.setAttribute("screenY", screen.availTop);
   }
 
-  Services.prefs.addObserver("mail.pane_config.dynamic", MailPrefObserver, false);
-  Services.prefs.addObserver("mail.showCondensedAddresses", MailPrefObserver,
-                             false);
+  Services.prefs.addObserver("mail.pane_config.dynamic", MailPrefObserver);
+  Services.prefs.addObserver("mail.showCondensedAddresses", MailPrefObserver);
 
   MailOfflineMgr.init();
   CreateMailWindowGlobals();
   GetMessagePaneWrapper().collapsed = true;
   msgDBCacheManager.init();
   Services.search.init();
 
   // This needs to be before we throw up the account wizard on first run.
@@ -415,17 +414,17 @@ function OnLoadMessenger()
     panelcontainer.addEventListener("InstallBrowserTheme",
                                     LightWeightThemeWebInstaller, false, true);
     panelcontainer.addEventListener("PreviewBrowserTheme",
                                     LightWeightThemeWebInstaller, false, true);
     panelcontainer.addEventListener("ResetBrowserThemePreview",
                                     LightWeightThemeWebInstaller, false, true);
   }
 
-  Services.obs.addObserver(gPluginHandler.pluginCrashed, "plugin-crashed", false);
+  Services.obs.addObserver(gPluginHandler.pluginCrashed, "plugin-crashed");
 
   // This also registers the contentTabType ("contentTab")
   specialTabs.openSpecialTabsOnStartup();
   preferencesTabType.initialize();
   // accountProvisionerTabType is defined in accountProvisionerTab.js
   tabmail.registerTabType(accountProvisionerTabType);
 
   // verifyAccounts returns true if the callback won't be called
@@ -1646,18 +1645,18 @@ function InitPageMenu(menuPopup, event) 
 }
 
 var TabsInTitlebar = {
   init() {
     if (AppConstants.CAN_DRAW_IN_TITLEBAR) {
       // Don't trust the initial value of the sizemode attribute; wait for the
       // resize event.
       this._readPref();
-      Services.prefs.addObserver(this._drawInTitlePref, this, false);
-      Services.prefs.addObserver(this._autoHidePref, this, false);
+      Services.prefs.addObserver(this._drawInTitlePref, this);
+      Services.prefs.addObserver(this._autoHidePref, this);
 
       this.allowedBy("sizemode", false);
       window.addEventListener("resize", function (event) {
         if (event.target != window)
           return;
         TabsInTitlebar.allowedBy("sizemode", true);
       });
 
--- a/mail/base/content/search.xml
+++ b/mail/base/content/search.xml
@@ -62,23 +62,23 @@
           this.setAttribute(
             "placeholder",
             this.getAttribute("emptytextbase")
                 .replace("#1", this.getAttribute(
                                  (AppConstants.platform == "macosx") ?
                                   "keyLabelMac" : "keyLabelNonMac")));
 
           Services.prefs.addObserver("mailnews.database.global.indexer.enabled",
-                                     this._prefObserver, false);
+                                     this._prefObserver);
 
           this.glodaCompleter =
             Components.classes["@mozilla.org/autocomplete/search;1?name=gloda"]
                       .getService()
                       .wrappedJSObject;
-          Services.obs.addObserver(this, "autocomplete-did-enter-text", false);
+          Services.obs.addObserver(this, "autocomplete-did-enter-text");
 
           this.glodaEnabled =
             Services.prefs.getBoolPref("mailnews.database.global.indexer.enabled");
           this.collapsed = !this.glodaEnabled;
 
           // make sure we set our emptytext here from the get-go
         if (this.hasAttribute("placeholder"))
           this.placeholder = this.getAttribute("placeholder");
--- a/mail/base/content/specialTabs.js
+++ b/mail/base/content/specialTabs.js
@@ -568,30 +568,30 @@ var specialTabs = {
     // Manually hook up session and global history for the first browser
     // so that we don't have to load global history before bringing up a
     // window.
     // Wire up session and global history before any possible
     // progress notifications for back/forward button updating
     browser.webNavigation.sessionHistory =
       Components.classes["@mozilla.org/browser/shistory;1"]
                 .createInstance(Components.interfaces.nsISHistory);
-    Services.obs.addObserver(browser, "browser:purge-session-history", false);
+    Services.obs.addObserver(browser, "browser:purge-session-history");
 
     // remove the disablehistory attribute so the browser cleans up, as
     // though it had done this work itself
     browser.removeAttribute("disablehistory");
 
     // enable global history
     try {
       browser.docShell.useGlobalHistory = true;
     } catch(ex) {
       Components.utils.reportError("Places database may be locked: " + ex);
     }
 
-    Services.obs.addObserver(specialTabs, "mail-startup-done", false);
+    Services.obs.addObserver(specialTabs, "mail-startup-done");
 
     let tabmail = document.getElementById('tabmail');
 
     tabmail.registerTabType(this.contentTabType);
     tabmail.registerTabType(this.chromeTabType);
 
     // If we've upgraded (note: always get these values so that we set
     // the mstone preference for the new version):
@@ -1302,24 +1302,20 @@ var specialTabs = {
     }
   },
 
   observe: function (aSubject, aTopic, aData) {
     if (aTopic != "mail-startup-done")
       return;
 
     Services.obs.removeObserver(specialTabs, "mail-startup-done");
-    Services.obs.addObserver(this.xpInstallObserver, "addon-install-disabled",
-                             false);
-    Services.obs.addObserver(this.xpInstallObserver, "addon-install-blocked",
-                             false);
-    Services.obs.addObserver(this.xpInstallObserver, "addon-install-failed",
-                             false);
-    Services.obs.addObserver(this.xpInstallObserver, "addon-install-complete",
-                             false);
+    Services.obs.addObserver(this.xpInstallObserver, "addon-install-disabled");
+    Services.obs.addObserver(this.xpInstallObserver, "addon-install-blocked");
+    Services.obs.addObserver(this.xpInstallObserver, "addon-install-failed");
+    Services.obs.addObserver(this.xpInstallObserver, "addon-install-complete");
   },
 
   onunload: function () {
     window.removeEventListener("unload", specialTabs.onunload);
 
     Services.obs.removeObserver(specialTabs.xpInstallObserver,
                                 "addon-install-disabled");
     Services.obs.removeObserver(specialTabs.xpInstallObserver,
--- a/mail/base/content/tabmail.xml
+++ b/mail/base/content/tabmail.xml
@@ -1746,17 +1746,17 @@
 
           if (this.mAutoHide)
             this.mCollapseToolbar.collapsed = true;
 
           this.firstChild.minWidth = this.mTabMinWidth;
           this.firstChild.maxWidth = this.mTabMaxWidth;
           this.adjustTabstrip();
 
-          Services.prefs.addObserver("mail.tabs.", this._prefObserver, false);
+          Services.prefs.addObserver("mail.tabs.", this._prefObserver);
 
           window.addEventListener("resize", this);
 
           // Listen to overflow/underflow events on the tabstrip,
           // we cannot put these as xbl handlers on the entire binding because
           // they would also get called for the all-tabs popup scrollbox.
           // Also, we can't rely on event.target becuase these are all
           // anonymous nodes.
--- a/mail/base/content/toolbarIconColor.js
+++ b/mail/base/content/toolbarIconColor.js
@@ -4,17 +4,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 var ToolbarIconColor = {
   init: function () {
     this._initialized = true;
 
     window.addEventListener("activate", this);
     window.addEventListener("deactivate", this);
-    Services.obs.addObserver(this, "lightweight-theme-styling-update", false);
+    Services.obs.addObserver(this, "lightweight-theme-styling-update");
 
     // If the window isn't active now, we assume that it has never been active
     // before and will soon become active such that inferFromText will be
     // called from the initial activate event.
     if (Services.focus.activeWindow == window)
       this.inferFromText();
   },
 
--- a/mail/base/modules/mailInstrumentation.js
+++ b/mail/base/modules/mailInstrumentation.js
@@ -177,17 +177,17 @@ var mailInstrumentationManager =
   _onLoad: function minst_onLoad() {
     Services.prefs.setCharPref("mail.instrumentation.lastNotificationSent",
                                this._lastStateString);
   },
   // keeps track of whether or not we've removed the observer for a given
   // pref name.
   _prefsObserved : new Map(),
   _addObserver : function(pref, observer) {
-    Services.prefs.addObserver(pref, observer, false);
+    Services.prefs.addObserver(pref, observer);
     this._prefsObserved.set(pref, true);
   },
   _removeObserver : function(pref, observer) {
     if (this._prefsObserved.has(pref)) {
       Services.prefs.removeObserver(pref, observer);
       this._prefsObserved.set(pref, false);
     }
   },
@@ -199,23 +199,23 @@ var mailInstrumentationManager =
     // If we're done with instrumentation, or this is not a first run,
     // we should just return immediately.
     if (!Services.prefs.getBoolPref("mail.instrumentation.askUser"))
       return;
     if (MailServices.accounts.accounts.length > 0)
       return;
 
     this._loadState();
-    Services.obs.addObserver(this, "mail:composeSendSucceeded", false);
-    Services.obs.addObserver(this, "mail:setAsDefault", false);
+    Services.obs.addObserver(this, "mail:composeSendSucceeded");
+    Services.obs.addObserver(this, "mail:setAsDefault");
     Services.prefs.addObserver("mail.accountmanager.accounts",
-                               this._accountsChanged, false);
+                               this._accountsChanged);
     Services.prefs.addObserver("mail.instrumentation.userOptedIn",
-                               this._userOptedIn, false);
-    Services.prefs.addObserver("mail.smtpservers", this._smtpServerAdded, false);
+                               this._userOptedIn);
+    Services.prefs.addObserver("mail.smtpservers", this._smtpServerAdded);
     MailServices.mfn.addListener(this, nsIMFNService.msgAdded);
     this._observersRegistered = true;
     this._mfnListener = true;
   },
   uninit: function() {
     if (!this._observersRegistered)
       return;
     Services.obs.removeObserver(this, "mail:composeSendSucceeded");
--- a/mail/base/modules/sessionStoreManager.js
+++ b/mail/base/modules/sessionStoreManager.js
@@ -83,17 +83,17 @@ var sessionStoreManager =
    */
   async _init()
   {
     await this._loadSessionFile();
 
     // we listen for "quit-application-granted" instead of
     // "quit-application-requested" because other observers of the
     // latter can cancel the shutdown.
-    Services.obs.addObserver(this, "quit-application-granted", false);
+    Services.obs.addObserver(this, "quit-application-granted");
 
     this.startPeriodicSave();
 
     this._initialized = true;
   },
 
   /**
    * Loads the session file into _initialState. This should only be called by
--- a/mail/components/compose/content/MsgComposeCommands.js
+++ b/mail/components/compose/content/MsgComposeCommands.js
@@ -1895,19 +1895,19 @@ var messageComposeOfflineQuitObserver =
         && !aSubject.data)
       aSubject.data = !ComposeCanClose();
   }
 }
 
 function AddMessageComposeOfflineQuitObserver()
 {
   Services.obs.addObserver(messageComposeOfflineQuitObserver,
-                           "network:offline-status-changed", false);
+                           "network:offline-status-changed");
   Services.obs.addObserver(messageComposeOfflineQuitObserver,
-                           "quit-application-requested", false);
+                           "quit-application-requested");
 
   // set the initial state of the send button
   MessageComposeOfflineStateChanged(Services.io.offline);
 }
 
 function RemoveMessageComposeOfflineQuitObserver()
 {
   Services.obs.removeObserver(messageComposeOfflineQuitObserver,
@@ -2403,17 +2403,17 @@ var dictionaryRemovalObserver =
       Services.prefs.setCharPref("spellchecker.dictionary", language);
     }
     document.documentElement.setAttribute("lang", language);
   },
 
   isAdded: false,
 
   addObserver: function() {
-    Services.obs.addObserver(this, "spellcheck-dictionary-remove", false);
+    Services.obs.addObserver(this, "spellcheck-dictionary-remove");
     this.isAdded = true;
   },
 
   removeObserver: function() {
     if (this.isAdded) {
       Services.obs.removeObserver(this, "spellcheck-dictionary-remove");
       this.isAdded = false;
     }
@@ -3785,17 +3785,17 @@ var spellCheckReadyObserver =
   },
 
   _isAdded: false,
 
   addObserver: function() {
     if (this._isAdded)
       return;
 
-    Services.obs.addObserver(this, this._topic, false);
+    Services.obs.addObserver(this, this._topic);
     this._isAdded = true;
   },
 
   removeObserver: function() {
     if (!this._isAdded)
       return;
 
     Services.obs.removeObserver(this, this._topic);
--- a/mail/components/im/content/chat-messenger-overlay.js
+++ b/mail/components/im/content/chat-messenger-overlay.js
@@ -407,17 +407,17 @@ var chatHandler = {
     if (this._pendingLogBrowserLoad) {
       browser._conv = aConversation;
       return;
     }
     browser.init(aConversation);
     this._pendingLogBrowserLoad = true;
     if (aSearchTerm)
       this._pendingSearchTerm = aSearchTerm;
-    Services.obs.addObserver(this, "conversation-loaded", false);
+    Services.obs.addObserver(this, "conversation-loaded");
 
     // Conversation title may not be set yet if this is a search result.
     let cti = document.getElementById("conv-top-info");
     cti.setAttribute("displayName", aConversation.title);
 
     // Find and display the contact for this log.
     let accounts = imServices.accounts.getAccounts();
     while (accounts.hasMoreElements()) {
@@ -1073,17 +1073,17 @@ var chatHandler = {
      "account-added","account-removed"
     ].forEach(chatHandler._addObserver);
 
     chatHandler._updateNoConvPlaceHolder();
     statusSelector.init();
   },
   _observedTopics: [],
   _addObserver: function(aTopic) {
-    imServices.obs.addObserver(chatHandler, aTopic, false);
+    imServices.obs.addObserver(chatHandler, aTopic);
     chatHandler._observedTopics.push(aTopic);
   },
   _removeObservers: function() {
     for (let topic of this._observedTopics)
       imServices.obs.removeObserver(this, topic);
   },
   init: function() {
     Notifications.init();
--- a/mail/components/im/content/imAccountWizard.js
+++ b/mail/components/im/content/imAccountWizard.js
@@ -27,17 +27,17 @@ var accountWizard = {
       item.setAttribute("class", "listitem-iconic");
     });
 
     // there is a strange selection bug without this timeout
     setTimeout(function() {
       protoList.selectedIndex = 0;
     }, 0);
 
-    Services.obs.addObserver(this, "prpl-quit", false);
+    Services.obs.addObserver(this, "prpl-quit");
     window.addEventListener("unload", this.unload);
   },
   unload: function aw_unload() {
     Services.obs.removeObserver(accountWizard, "prpl-quit");
   },
   observe: function am_observe(aObject, aTopic, aData) {
     if (aTopic == "prpl-quit") {
       // libpurple is being uninitialized. We can't create any new
--- a/mail/components/im/content/imAccounts.js
+++ b/mail/components/im/content/imAccounts.js
@@ -41,17 +41,17 @@ var gAccountManager = {
       for (let acc of this.getAccounts()) {
         var elt = document.createElement("richlistitem");
         this.accountList.appendChild(elt);
         elt.build(acc);
         if (!defaultID && acc.firstConnectionState == acc.FIRST_CONNECTION_CRASHED)
           defaultID = acc.id;
       }
       for (let event of events)
-        Services.obs.addObserver(this, event, false);
+        Services.obs.addObserver(this, event);
       if (!this.accountList.getRowCount())
         // This is horrible, but it works. Otherwise (at least on mac)
         // the wizard is not centered relatively to the account manager
         setTimeout(function() { gAccountManager.new(); }, 0);
       else {
         // we have accounts, show the list
         document.getElementById("accountsDesk").selectedIndex = 1;
 
--- a/mail/components/im/content/imStatusSelector.js
+++ b/mail/components/im/content/imStatusSelector.js
@@ -273,17 +273,17 @@ var statusSelector = {
       statusSelector.displayUserIcon();
     }
 
     let statusMessage = document.getElementById("statusMessage");
     if (statusMessage)
       statusMessage.addEventListener("keypress", this.statusMessageKeyPress);
 
     for (let event of events)
-      Services.obs.addObserver(statusSelector, event, false);
+      Services.obs.addObserver(statusSelector, event);
     statusSelector._events = events;
 
     window.addEventListener("unload", statusSelector.unload);
   },
 
   unload: function ss_unload() {
     for (let event of statusSelector._events)
       Services.obs.removeObserver(statusSelector, event);
--- a/mail/components/im/content/imconversation.xml
+++ b/mail/components/im/content/imconversation.xml
@@ -55,17 +55,17 @@
          }
        }.bind(this)).observe(this.getElt("splitter-bottom"),
                              {attributes: true, attributeOldValue: true,
                               attributeFilter: ["state"]});
 
        var browser = this.browser;
        browser.addEventListener("keypress", this.browserKeyPress);
        browser.addEventListener("dblclick", this.browserDblClick.bind(this));
-       Services.obs.addObserver(this, "conversation-loaded", false);
+       Services.obs.addObserver(this, "conversation-loaded");
       ]]>
      </constructor>
 
      <destructor>
       <![CDATA[
         this.destroy();
       ]]>
      </destructor>
--- a/mail/components/im/modules/chatHandler.jsm
+++ b/mail/components/im/modules/chatHandler.jsm
@@ -16,21 +16,21 @@ var ChatCore = {
   _initializing: false,
   init: function() {
     if (this._initializing)
       return;
     this._initializing = true;
 
     Components.utils.import("resource:///modules/index_im.js");
 
-    Services.obs.addObserver(this, "browser-request", false);
-    Services.obs.addObserver(this, "contact-signed-on", false);
-    Services.obs.addObserver(this, "contact-signed-off", false);
-    Services.obs.addObserver(this, "contact-added", false);
-    Services.obs.addObserver(this, "contact-removed", false);
+    Services.obs.addObserver(this, "browser-request");
+    Services.obs.addObserver(this, "contact-signed-on");
+    Services.obs.addObserver(this, "contact-signed-off");
+    Services.obs.addObserver(this, "contact-added");
+    Services.obs.addObserver(this, "contact-removed");
 
     // The initialization of the im core may trigger a master password prompt,
     // so wrap it with the async prompter service. Note this service already
     // waits for the asynchronous initialization of the password service.
     Components.classes["@mozilla.org/messenger/msgAsyncPrompter;1"]
               .getService(Components.interfaces.nsIMsgAsyncPrompter)
               .queueAsyncAuthPrompt("im", false, {
       onPromptStart: function() {
--- a/mail/components/im/modules/chatNotifications.jsm
+++ b/mail/components/im/modules/chatNotifications.jsm
@@ -113,18 +113,18 @@ var Notifications = {
     Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService)
       .showAlertNotification(icon, name, messageText, true, "", this);
 
     this._heldMessage = null;
     this._msgCounter = 0;
   },
 
   init: function() {
-    Services.obs.addObserver(Notifications, "new-directed-incoming-message", false);
-    Services.obs.addObserver(Notifications, "alertclickcallback", false);
+    Services.obs.addObserver(Notifications, "new-directed-incoming-message");
+    Services.obs.addObserver(Notifications, "alertclickcallback");
   },
 
   _notificationPrefName: "mail.chat.show_desktop_notifications",
   observe: function(aSubject, aTopic, aData) {
     if (aTopic == "new-directed-incoming-message" &&
         Services.prefs.getBoolPref(this._notificationPrefName)) {
       // If this is the first message, we show the notification and
       // store the sender's name.
--- a/mail/components/im/modules/index_im.js
+++ b/mail/components/im/modules/index_im.js
@@ -234,19 +234,19 @@ Gloda.defineAttribute({
   },
   canQuery: true
 });
 
 var GlodaIMIndexer = {
   name: "index_im",
   cacheVersion: 1,
   enable: function() {
-    Services.obs.addObserver(this, "conversation-closed", false);
-    Services.obs.addObserver(this, "new-ui-conversation", false);
-    Services.obs.addObserver(this, "ui-conversation-closed", false);
+    Services.obs.addObserver(this, "conversation-closed");
+    Services.obs.addObserver(this, "new-ui-conversation");
+    Services.obs.addObserver(this, "ui-conversation-closed");
 
     // The shutdown blocker ensures pending saves happen even if the app
     // gets shut down before the timer fires.
     if (this._shutdownBlockerAdded)
       return;
     this._shutdownBlockerAdded = true;
     AsyncShutdown.profileBeforeChange.addBlocker("GlodaIMIndexer cache save",
       () => {
--- a/mail/components/mailGlue.js
+++ b/mail/components/mailGlue.js
@@ -28,21 +28,21 @@ function MailGlue() {
     });
 
   this._init();
 }
 
 MailGlue.prototype = {
   // init (called at app startup)
   _init: function MailGlue__init() {
-    Services.obs.addObserver(this, "xpcom-shutdown", false);
-    Services.obs.addObserver(this, "final-ui-startup", false);
-    Services.obs.addObserver(this, "mail-startup-done", false);
-    Services.obs.addObserver(this, "handle-xul-text-link", false);
-    Services.obs.addObserver(this, "profile-after-change", false);
+    Services.obs.addObserver(this, "xpcom-shutdown");
+    Services.obs.addObserver(this, "final-ui-startup");
+    Services.obs.addObserver(this, "mail-startup-done");
+    Services.obs.addObserver(this, "handle-xul-text-link");
+    Services.obs.addObserver(this, "profile-after-change");
   },
 
   // cleanup (called at shutdown)
   _dispose: function MailGlue__dispose() {
     Services.obs.removeObserver(this, "xpcom-shutdown");
     Services.obs.removeObserver(this, "final-ui-startup");
     Services.obs.removeObserver(this, "mail-startup-done");
     Services.obs.removeObserver(this, "handle-xul-text-link");
--- a/mail/components/migration/content/migration.js
+++ b/mail/components/migration/content/migration.js
@@ -14,21 +14,21 @@ var MigrationWizard = {
   _itemsFlags: kIMig.ALL,       // Selected Import Data Sources (16-bit bitfield)
   _selectedProfile: null,       // Selected Profile name to import from
   _wiz: null,
   _migrator: null,
   _autoMigrate: null,
 
   init: function ()
   {
-    Services.obs.addObserver(this, "Migration:Started", false);
-    Services.obs.addObserver(this, "Migration:ItemBeforeMigrate", false);
-    Services.obs.addObserver(this, "Migration:ItemAfterMigrate", false);
-    Services.obs.addObserver(this, "Migration:Ended", false);
-    Services.obs.addObserver(this, "Migration:Progress", false);
+    Services.obs.addObserver(this, "Migration:Started");
+    Services.obs.addObserver(this, "Migration:ItemBeforeMigrate");
+    Services.obs.addObserver(this, "Migration:ItemAfterMigrate");
+    Services.obs.addObserver(this, "Migration:Ended");
+    Services.obs.addObserver(this, "Migration:Progress");
 
     this._wiz = document.documentElement;
 
     if (("arguments" in window) && !window.arguments[3]) {
       this._source = window.arguments[0];
       this._migrator = window.arguments[1] ? window.arguments[1].QueryInterface(kIMig) : null;
       this._autoMigrate = window.arguments[2].QueryInterface(kIPStartup);
 
--- a/mail/components/newmailaccount/content/accountProvisionerTab.js
+++ b/mail/components/newmailaccount/content/accountProvisionerTab.js
@@ -101,20 +101,19 @@ accountProvisionerTabType._setMonitoring
   // text/xml.
   this._observer = new mail3Pane.httpRequestObserver(aBrowser, {
     realName: aRealName,
     email: aEmail,
     searchEngine: aSearchEngine,
   });
 
   // Register our observer
-  Services.obs.addObserver(this._observer, "http-on-examine-response", false);
-  Services.obs.addObserver(this._observer, "http-on-examine-cached-response",
-                           false);
-  Services.obs.addObserver(this.quitObserver, "mail-unloading-messenger", false);
+  Services.obs.addObserver(this._observer, "http-on-examine-response");
+  Services.obs.addObserver(this._observer, "http-on-examine-cached-response");
+  Services.obs.addObserver(this.quitObserver, "mail-unloading-messenger");
 
   this._log.info("httpRequestObserver wired up.");
 }
 
 /**
  * Click handler for the Account Provisioner tab that allows all links
  * to open within the current content tab, except for those which have
  * their targets set to _blank - these links open in the default browser.
--- a/mail/components/preferences/applications.js
+++ b/mail/components/preferences/applications.js
@@ -867,18 +867,18 @@ var gApplicationsPane = {
     this._brandShortName =
       document.getElementById("bundleBrand").getString("brandShortName");
     this._prefsBundle = document.getElementById("bundlePreferences");
     this._list = document.getElementById("handlersView");
     this._filter = document.getElementById("filter");
 
     // Observe preferences that influence what we display so we can rebuild
     // the view when they change.
-    Services.prefs.addObserver(PREF_SHOW_PLUGINS_IN_LIST, this, false);
-    Services.prefs.addObserver(PREF_HIDE_PLUGINS_WITHOUT_EXTENSIONS, this, false);
+    Services.prefs.addObserver(PREF_SHOW_PLUGINS_IN_LIST, this);
+    Services.prefs.addObserver(PREF_HIDE_PLUGINS_WITHOUT_EXTENSIONS, this);
 
     // Listen for window unload so we can remove our preference observers.
     window.addEventListener("unload", this, {capture: false, once: true});
 
     // Figure out how we should be sorting the list.  We persist sort settings
     // across sessions, so we can't assume the default sort column/direction.
     // XXX should we be using the XUL sort service instead?
     this._sortColumn = document.getElementById("typeColumn")
--- a/mail/components/preferences/compose.js
+++ b/mail/components/preferences/compose.js
@@ -238,17 +238,17 @@ var gComposePane = {
         return;
 
       // If the default startup directory prefs have changed,
       // reinitialize the default startup dir picker to show the new value.
       gComposePane.initAbDefaultStartupDir();
     },
     load: function() {
       // Observe changes of our prefs.
-      Services.prefs.addObserver(this.domain, this, false);
+      Services.prefs.addObserver(this.domain, this);
       // Unload the pref observer when preferences window is closed.
       window.addEventListener("unload", this.unload, true);
       this.inited = true;
     },
 
     unload: function(event) {
       Services.prefs.removeObserver(gComposePane.startupDirListener.domain,
                                     gComposePane.startupDirListener);
--- a/mail/components/preferences/cookies.js
+++ b/mail/components/preferences/cookies.js
@@ -11,18 +11,18 @@ var nsICookie = Components.interfaces.ns
 var gCookiesWindow = {
   _hosts            : {},
   _hostOrder        : [],
   _tree             : null,
   _bundle           : null,
 
   init: function ()
   {
-    Services.obs.addObserver(this, "cookie-changed", false);
-    Services.obs.addObserver(this, "perm-changed", false);
+    Services.obs.addObserver(this, "cookie-changed");
+    Services.obs.addObserver(this, "perm-changed");
 
     this._bundle = document.getElementById("bundlePreferences");
     this._tree = document.getElementById("cookiesList");
 
     this._populateList(true);
 
     document.getElementById("filter").focus();
 
--- a/mail/components/preferences/messagestyle.js
+++ b/mail/components/preferences/messagestyle.js
@@ -158,17 +158,17 @@ var previewObserver = {
 
     this.reloadPreview();
     document.getElementById("previewDeck").selectedIndex = 1;
   },
 
   reloadPreview: function() {
     this.browser.init(this.conv);
     this.browser._theme = this.theme;
-    Services.obs.addObserver(this, "conversation-loaded", false);
+    Services.obs.addObserver(this, "conversation-loaded");
   },
 
   observe: function(aSubject, aTopic, aData) {
     if (aTopic != "conversation-loaded" || aSubject != this.browser)
       return;
 
     // We want to avoid the convbrowser trying to scroll to the last
     // added message, as that causes the entire pref pane to jump up
--- a/mail/components/preferences/permissions.js
+++ b/mail/components/preferences/permissions.js
@@ -269,17 +269,17 @@ var gPermissionManager = {
       if (!sortField) {
         return;
       }
 
       gPermissionManager.onPermissionSort(sortField);
     });
 
     Services.obs.notifyObservers(null, NOTIFICATION_FLUSH_PERMISSIONS, this._type);
-    Services.obs.addObserver(this, "perm-changed", false);
+    Services.obs.addObserver(this, "perm-changed");
 
     this._loadPermissions();
 
     urlField.focus();
   },
 
   uninit: function ()
   {
--- a/mail/components/search/content/searchCommon.js
+++ b/mail/components/search/content/searchCommon.js
@@ -207,17 +207,17 @@ var SearchSupport =
         MailServices.mfn.msgsDeleted |
         MailServices.mfn.msgsMoveCopyCompleted |
         // this code pre-dates msgsClassified
         // folderAdded intentionally omitted
         MailServices.mfn.folderDeleted |
         MailServices.mfn.folderMoveCopyCompleted |
         MailServices.mfn.folderRenamed);
         // itemEvent intentionally omitted
-      Services.obs.addObserver(this, "MsgMsgDisplayed", false);
+      Services.obs.addObserver(this, "MsgMsgDisplayed");
       let idleService = Cc["@mozilla.org/widget/idleservice;1"]
                           .getService(Ci.nsIIdleService);
       idleService.addIdleObserver(this, this._idleThresholdSecs);
     }
     else
       // We want to observe moves, deletes and renames in case we're disabled
       // If we don't, we'll have no idea the support files exist later
       MailServices.mfn.addListener(this._msgFolderListener,
@@ -263,17 +263,17 @@ var SearchSupport =
    */
   _initSupport: function search_init_support(enabled)
   {
     this._log.info("Search integration running in " +
                    (enabled ? "active" : "backoff") + " mode");
     this.enabled = enabled;
 
     // Set up a pref observer
-    this._prefBranch.addObserver("enable", this, false);
+    this._prefBranch.addObserver("enable", this);
   },
 
   /**
    * Current folder being indexed
    */
   _currentFolderToIndex: null,
 
   /**
@@ -584,17 +584,17 @@ var SearchSupport =
 
   /// Handle failure to register or deregister
   _handleRegisterFailure: function search_handle_register_failure(enabled)
   {
     // Remove ourselves from the observer list, flip the pref,
     // and add ourselves back
     this._prefBranch.removeObserver("enable", this);
     this.prefEnabled = enabled;
-    this._prefBranch.addObserver("enable", this, false);
+    this._prefBranch.addObserver("enable", this);
   },
 
   /**
    * This object gets notifications for new/moved/copied/deleted messages/folders
    */
   _msgFolderListener: {
     msgAdded: function(aMsg)
     {
--- a/mail/test/mozmill/cloudfile/test-cloudfile-backend-hightail.js
+++ b/mail/test/mozmill/cloudfile/test-cloudfile-backend-hightail.js
@@ -59,17 +59,17 @@ function test_simple_case() {
   const kTopics = [kUploadFile, kGetFileURL];
 
   gServer.planForUploadFile("testFile1");
   gServer.planForGetFileURL("testFile1", {url: kExpectedUrl});
 
   let obs = new ObservationRecorder();
   for (let topic of kTopics) {
     obs.planFor(topic);
-    Services.obs.addObserver(obs, topic, false);
+    Services.obs.addObserver(obs, topic);
   }
 
   let requestObserver = gObsManager.create("test_simple_case - Upload 1");
   let file = getFile("./data/testFile1", __file__);
   let provider = gServer.getPreparedBackend("someAccountKey");
   provider.uploadFile(file, requestObserver);
 
   mc.waitFor( () => requestObserver.success);
@@ -104,17 +104,17 @@ function test_chained_uploads() {
     let expectedUrl = kExpectedUrlRoot + filename;
     gServer.planForUploadFile(filename);
     gServer.planForGetFileURL(filename, {url: expectedUrl});
   }
 
   let obs = new ObservationRecorder();
   for (let topic of kTopics) {
     obs.planFor(topic);
-    Services.obs.addObserver(obs, topic, false);
+    Services.obs.addObserver(obs, topic);
   }
 
   let provider = gServer.getPreparedBackend("someAccountKey");
 
   let files = [];
 
   let observers = kFilenames.map(function(aFilename) {
     let requestObserver = gObsManager.create("test_chained_uploads for filename " + aFilename);
@@ -154,17 +154,17 @@ function test_deleting_uploads() {
   gServer.planForUploadFile(kFilename);
   let requestObserver = gObsManager.create("test_deleting_uploads - upload 1");
   provider.uploadFile(file, requestObserver);
   mc.waitFor(() => requestObserver.success);
 
   // Try deleting a file
   let obs = new ObservationRecorder();
   obs.planFor(kDeleteFile)
-  Services.obs.addObserver(obs, kDeleteFile, false);
+  Services.obs.addObserver(obs, kDeleteFile);
 
   gServer.planForDeleteFile(kFilename);
   let deleteObserver = gObsManager.create("test_deleting_uploads - delete 1");
   provider.deleteFile(file, deleteObserver);
   mc.waitFor(() => deleteObserver.success);
 
   // Check to make sure the file was deleted on the server
   assert_equals(1, obs.numSightings(kDeleteFile));
--- a/mail/test/mozmill/content-tabs/test-plugin-crashing.js
+++ b/mail/test/mozmill/content-tabs/test-plugin-crashing.js
@@ -117,17 +117,17 @@ function teardownTest() {
  * IMPORTANT:  Calls to planForCrash must be followed by waitForCrash in
  * order to remove PluginCrashObserver from the nsIObserverService.
  */
 var PluginCrashObserver = {
   _sawCrash: false,
 
   planForCrash: function(aController) {
     this._sawCrash = false;
-    Services.obs.addObserver(this, "plugin-crashed", false);
+    Services.obs.addObserver(this, "plugin-crashed");
   },
 
   waitForCrash: function(aController) {
     if (!this._sawCrash)
       aController.waitFor(() => this._sawCrash, "Timeout waiting for crash",
                           5000, 100);
 
     Services.obs.removeObserver(this, "plugin-crashed");
--- a/mail/test/mozmill/folder-display/test-columns.js
+++ b/mail/test/mozmill/folder-display/test-columns.js
@@ -565,17 +565,17 @@ function plan_for_columns_state_update()
   gColumnStateUpdated = false;
 }
 
 function wait_for_columns_state_updated() {
   const STATE_PREF = "mailnews.database.global.views.global";
   let columns_state_updated = function() {
     gColumnStateUpdated = true;
   }
-  Services.prefs.addObserver(STATE_PREF, columns_state_updated, false);
+  Services.prefs.addObserver(STATE_PREF, columns_state_updated);
   mc.waitFor(() => gColumnStateUpdated, "Timeout waiting for columns state updated.");
   Services.prefs.removeObserver(STATE_PREF, columns_state_updated);
 }
 
 function test_column_defaults_gloda_collection() {
   let fakeCollection = new FakeCollection();
   mc.tabmail.openTab("glodaList", { collection: fakeCollection });
   wait_for_all_messages_to_load();
--- a/mail/test/mozmill/override-main-menu-collapse/test-override-mainmenu-collapse.js
+++ b/mail/test/mozmill/override-main-menu-collapse/test-override-mainmenu-collapse.js
@@ -26,17 +26,17 @@ function test_main_menu_not_collapsed() 
   let done = false;
   let observer = {
     observe: function(aSubject, aTopic, aData) {
       if (aTopic == "mail-startup-done") {
         done = true;
       }
     }
   };
-  Services.obs.addObserver(observer, "mail-startup-done", false);
+  Services.obs.addObserver(observer, "mail-startup-done");
 
   // Since no accounts were set up, and the account provisoner was disabled
   // in prefs.js, the wizard will show up. Find it, and close it. This will
   // cause mail-startup-done to eventually be fired.
   let wizard = wait_for_existing_window("mail:autoconfig");
   close_window(wizard);
 
   // Spin the event loop until mail-startup-done is fired.
--- a/mail/test/mozmill/shared-modules/test-content-tab-helpers.js
+++ b/mail/test/mozmill/shared-modules/test-content-tab-helpers.js
@@ -463,17 +463,17 @@ function plugins_run_in_separate_process
 
 function updateBlocklist(aController, aCallback) {
   let blocklistNotifier = Cc["@mozilla.org/extensions/blocklist;1"]
                             .getService(Ci.nsITimerCallback);
   let observer = function() {
     Services.obs.removeObserver(observer, "blocklist-updated");
     aController.window.setTimeout(aCallback, 0);
   };
-  Services.obs.addObserver(observer, "blocklist-updated", false);
+  Services.obs.addObserver(observer, "blocklist-updated");
   blocklistNotifier.notify(null);
 }
 
 function setAndUpdateBlocklist(aController, aURL, aCallback) {
   if (!_originalBlocklistURL) {
     _originalBlocklistURL = Services.prefs.getCharPref("extensions.blocklist.url");
   }
   Services.prefs.setCharPref("extensions.blocklist.url", aURL);
--- a/mail/test/mozmill/shared-modules/test-window-helpers.js
+++ b/mail/test/mozmill/shared-modules/test-window-helpers.js
@@ -782,17 +782,17 @@ function plan_for_observable_event(aTopi
   mark_action("fdh", "plan_for_observable_event", [aTopic]);
   observationSaw[aTopic] = false;
   let waiter = observationWaitFuncs[aTopic] = {
     observe: function() {
       mark_action("winhelp", "observed event", [aTopic]);
       observationSaw[aTopic] = true;
     }
   };
-  Services.obs.addObserver(waiter, aTopic, false);
+  Services.obs.addObserver(waiter, aTopic);
 }
 
 /**
  * Wait for a notification (previously planned for via
  *  |plan_for_observable_event|) to fire.
  *
  * @param aTopic The topic sent via the observer service.
  */
--- a/mail/test/mozmill/startup-firstrun/test-menubar-collapsed.js
+++ b/mail/test/mozmill/startup-firstrun/test-menubar-collapsed.js
@@ -23,17 +23,17 @@ function test_main_menu_collapsed() {
   let done = false;
   let observer = {
     observe: function(aSubject, aTopic, aData) {
       if (aTopic == "mail-startup-done") {
         done = true;
       }
     }
   };
-  Services.obs.addObserver(observer, "mail-startup-done", false);
+  Services.obs.addObserver(observer, "mail-startup-done");
 
   // Since no accounts were set up, and the account provisoner was disabled
   // in prefs.js, the wizard will show up. Find it, and close it. This will
   // cause mail-startup-done to eventually be fired.
   let wizard = wait_for_existing_window("mail:autoconfig");
   close_window(wizard);
 
   // Spin the event loop until mail-startup-done is fired.
--- a/mail/test/resources/mozmill/mozmill/extension/content/dx.js
+++ b/mail/test/resources/mozmill/mozmill/extension/content/dx.js
@@ -116,17 +116,17 @@ DomInspectorConnector.prototype.dxOn = f
       this.dxRecursiveBind(win, clickMethod);
     }
   }
 
   var observerService =
     Components.classes["@mozilla.org/observer-service;1"]
       .getService(Components.interfaces.nsIObserverService);
 
-  observerService.addObserver(this.observer, "toplevel-window-ready", false);
+  observerService.addObserver(this.observer, "toplevel-window-ready");
 };
 
 //when a new dom window gets opened
 DomInspectorConnector.prototype.observer = {
   observe: function(subject,topic,data){
     var clickMethod = "dblclick";
     if ($('inspectSingle').selected){
       clickMethod = 'click';
--- a/mail/test/resources/mozmill/mozmill/extension/resource/modules/frame.js
+++ b/mail/test/resources/mozmill/mozmill/extension/resource/modules/frame.js
@@ -496,17 +496,17 @@ function AppQuitObserver() {
 }
 AppQuitObserver.prototype = {
   observe: function(subject, topic, data) {
     events.appQuit = true;
   },
   register: function() {
     var obsService = Components.classes["@mozilla.org/observer-service;1"]
                      .getService(Components.interfaces.nsIObserverService);
-    obsService.addObserver(this, "quit-application", false);
+    obsService.addObserver(this, "quit-application");
   },
   unregister: function() {
     var obsService = Components.classes["@mozilla.org/observer-service;1"]
                      .getService(Components.interfaces.nsIObserverService);
     obsService.removeObserver(this, "quit-application");
   }
 }
 
--- a/mail/test/resources/mozmill/mozmill/extension/resource/modules/init.js
+++ b/mail/test/resources/mozmill/mozmill/extension/resource/modules/init.js
@@ -122,18 +122,18 @@ function attachEventListeners(aWindow) {
 
 /**
  * Initialize Mozmill
  */
 function initialize() {
   // Activate observer for new top level windows
   var observerService = Cc["@mozilla.org/observer-service;1"].
                         getService(Ci.nsIObserverService);
-  observerService.addObserver(windowReadyObserver, "toplevel-window-ready", false);
-  observerService.addObserver(windowCloseObserver, "outer-window-destroyed", false);
+  observerService.addObserver(windowReadyObserver, "toplevel-window-ready");
+  observerService.addObserver(windowCloseObserver, "outer-window-destroyed");
 
   // Attach event listeners to all open windows
   var enumerator = Cc["@mozilla.org/appshell/window-mediator;1"].
                    getService(Ci.nsIWindowMediator).getEnumerator("");
   while (enumerator.hasMoreElements()) {
     var win = enumerator.getNext();
     attachEventListeners(win);
 
--- a/mailnews/addrbook/prefs/content/pref-directory-add.js
+++ b/mailnews/addrbook/prefs/content/pref-directory-add.js
@@ -55,17 +55,17 @@ function Startup()
     document.title = gReplicationBundle.getFormattedString("directoryTitleEdit", [oldListName]);
 
     // Only set up the download button for online/offline status toggling
     // if the pref isn't locked to disable the button.
     if (!Services.prefs.prefIsLocked(gCurrentDirectory.dirPrefId +
                                      ".disable_button_download")) {
       // Now connect to the offline/online observer
       Services.obs.addObserver(ldapOfflineObserver,
-                               "network:offline-status-changed", false);
+                               "network:offline-status-changed");
 
       // Now set the initial offline/online state and update the state
       setDownloadOfflineOnlineState(Services.io.offline);
     }
   } else {
     document.title = gReplicationBundle.getString("directoryTitleNew");
     fillDefaultSettings();
     // Don't add observer here as it doesn't make any sense.
--- a/mailnews/addrbook/src/nsAbLDAPAutoCompleteSearch.js
+++ b/mailnews/addrbook/src/nsAbLDAPAutoCompleteSearch.js
@@ -73,17 +73,17 @@ nsAbLDAPAutoCompleteResult.prototype = {
   },
 
   // nsISupports
 
   QueryInterface: XPCOMUtils.generateQI([ACR, nsIAbAutoCompleteResult])
 }
 
 function nsAbLDAPAutoCompleteSearch() {
-  Services.obs.addObserver(this, "quit-application", false);
+  Services.obs.addObserver(this, "quit-application");
   this._timer = Components.classes["@mozilla.org/timer;1"]
                           .createInstance(Components.interfaces.nsITimer);
 }
 
 nsAbLDAPAutoCompleteSearch.prototype = {
   // For component registration
   classID: Components.ID("227e6482-fe9f-441f-9b7d-7b60375e7449"),
 
--- a/mailnews/base/src/newMailNotificationService.js
+++ b/mailnews/base/src/newMailNotificationService.js
@@ -49,17 +49,17 @@ function NewMailNotificationService() {
   this.wrappedJSObject = this;
 
   this._log = Log4Moz.getConfiguredLogger("mail.notification",
                                           Log4Moz.Level.Warn,
                                           Log4Moz.Level.Warn,
                                           Log4Moz.Level.Warn);
 
   // Listen for mail-startup-done to do the rest of our setup after folders are initialized
-  Services.obs.addObserver(this, "mail-startup-done", false);
+  Services.obs.addObserver(this, "mail-startup-done");
 }
 
 NewMailNotificationService.prototype = {
   classDescription: "Maintain counts of new and unread messages",
   classID:              Components.ID("{740880E6-E299-4165-B82F-DF1DCAB3AE22}"),
   contractID:           "@mozilla.org/newMailNotificationService;1",
   QueryInterface:       XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsIFolderListener, Ci.mozINewMailNotificationService]),
   _xpcom_factory: XPCOMUtils.generateSingletonFactory(NewMailNotificationService),
@@ -80,17 +80,17 @@ NewMailNotificationService.prototype = {
     try {
       if (aTopic == "mail-startup-done") {
         try {
           Services.obs.removeObserver(this, "mail-startup-done");
         }
         catch (e) {
           this._log.error("NMNS_Observe: unable to deregister mail-startup-done listener: " + e);
         }
-        Services.obs.addObserver(this, "profile-before-change", false);
+        Services.obs.addObserver(this, "profile-before-change");
         MailServices.mailSession.AddFolderListener(this, Ci.nsIFolderListener.intPropertyChanged |
                                                          Ci.nsIFolderListener.added |
                                                          Ci.nsIFolderListener.removed |
                                                          Ci.nsIFolderListener.propertyFlagChanged);
         this._initUnreadCount();
       }
       else if (aTopic == "profile-before-change") {
         try {
--- a/mailnews/base/util/msgDBCacheManager.js
+++ b/mailnews/base/util/msgDBCacheManager.js
@@ -44,17 +44,17 @@ var msgDBCacheManager =
       return;
 
     this._dbService = Cc["@mozilla.org/msgDatabase/msgDBService;1"]
                         .getService(Ci.nsIMsgDBService);
 
     // we listen for "quit-application-granted" instead of
     // "quit-application-requested" because other observers of the
     // latter can cancel the shutdown.
-    Services.obs.addObserver(this, "quit-application-granted", false);
+    Services.obs.addObserver(this, "quit-application-granted");
 
     this.startPeriodicCheck();
 
     this._initialized = true;
   },
 
 /* ........ Timer Callback ................*/
 
--- a/mailnews/compose/test/unit/test_sendObserver.js
+++ b/mailnews/compose/test/unit/test_sendObserver.js
@@ -42,11 +42,11 @@ add_task(function* testObserver() {
   // observer data should have:
   // (local account key), Ci.nsIMsgSend.nsMsgSaveAsDraft, identity.key
   Assert.equal(gData, "account1,4,id1");
 });
 
 function run_test() {
   // Ensure we have at least one mail account
   localAccountUtils.loadLocalMailAccount();
-  Services.obs.addObserver(observer, "mail-set-sender", false);
+  Services.obs.addObserver(observer, "mail-set-sender");
   run_next_test();
 }
--- a/mailnews/db/gloda/modules/datastore.js
+++ b/mailnews/db/gloda/modules/datastore.js
@@ -491,17 +491,17 @@ ExplainedStatementWrapper.prototype = {
 };
 
 /**
  * Writes a single JSON document to the provide file path in a streaming
  *  fashion.  At startup we open an array to place the queries in and at
  *  shutdown we close it.
  */
 function ExplainedStatementProcessor(aDumpPath) {
-  Services.obs.addObserver(this, "quit-application", false);
+  Services.obs.addObserver(this, "quit-application");
 
   this._sqlStack = [];
   this._curOps = [];
   this._objsWritten = 0;
 
   let filePath = Cc["@mozilla.org/file/local;1"]
                    .createInstance(Ci.nsIFile);
   filePath.initWithPath(aDumpPath);
@@ -1003,17 +1003,17 @@ var GlodaDatastore = {
 
     this._nounIDToDef = aNounIDToDef;
 
     let branch = Services.prefs.getBranch("mailnews.database.global.datastore.");
     this._prefBranch = branch;
 
     // Not sure the weak reference really makes a difference given that we are a
     // GC root.
-    branch.addObserver("", this, false);
+    branch.addObserver("", this);
     // claim the pref changed so we can centralize our logic there.
     this.observe(null, "nsPref:changed", "explainToPath");
 
     // Get the path to our global database
     var dbFile = Services.dirsvc.get("ProfD", Ci.nsIFile);
     dbFile.append("global-messages-db.sqlite");
 
     var dbConnection;
--- a/mailnews/db/gloda/modules/indexer.js
+++ b/mailnews/db/gloda/modules/indexer.js
@@ -327,17 +327,17 @@ var GlodaIndexer = {
       this._perfPauseStopwatch = Cc["@mozilla.org/stopwatch;1"]
                                    .createInstance(Ci.nsIStopwatch);
 
     } catch (ex) {
       this._log.error("problem creating stopwatch!: " + ex);
     }
 
     // register for shutdown notifications
-    Services.obs.addObserver(this, "quit-application", false);
+    Services.obs.addObserver(this, "quit-application");
 
     // figure out if event-driven indexing should be enabled...
     let branch = Services.prefs.getBranch("mailnews.database.global.indexer.");
     let eventDrivenEnabled = false; // default
     let performInitialSweep = true; // default
     try {
       eventDrivenEnabled = branch.getBoolPref("enabled");
     } catch (ex) {
@@ -483,17 +483,17 @@ var GlodaIndexer = {
   /**
    * Are we enabled, read: are we processing change events?
    */
   _enabled: false,
   get enabled() { return this._enabled; },
   set enabled(aEnable) {
     if (!this._enabled && aEnable) {
       // register for offline notifications
-      Services.obs.addObserver(this, "network:offline-status-changed", false);
+      Services.obs.addObserver(this, "network:offline-status-changed");
 
       // register for idle notification
       this._idleService.addIdleObserver(this, this._indexIdleThresholdSecs);
 
       this._enabled = true;
 
       for (let indexer of this._indexers) {
         try {
--- a/mailnews/db/gloda/modules/mimemsg.js
+++ b/mailnews/db/gloda/modules/mimemsg.js
@@ -37,17 +37,17 @@ var dumbUrlListener = {
 var activeStreamListeners = {};
 
 var shutdownCleanupObserver = {
   _initialized: false,
   ensureInitialized: function mimemsg_shutdownCleanupObserver_init() {
     if (this._initialized)
       return;
 
-    Services.obs.addObserver(this, "quit-application", false);
+    Services.obs.addObserver(this, "quit-application");
 
     this._initialized = true;
   },
 
   observe: function mimemsg_shutdownCleanupObserver_observe(
       aSubject, aTopic, aData) {
     if (aTopic == "quit-application") {
       Services.obs.removeObserver(this, "quit-application");
--- a/mailnews/extensions/offline-startup/js/offlineStartup.js
+++ b/mailnews/extensions/offline-startup/js/offlineStartup.js
@@ -116,18 +116,18 @@ var nsOfflineStartup =
 
     if (aTopic == "profile-change-net-teardown")
     {
       gDebugLog("remembering offline state");
       Services.prefs.setBoolPref("network.online", !Services.io.offline);
     }
     else if (aTopic == "app-startup")
     {
-      Services.obs.addObserver(this, "profile-after-change", false);
-      Services.obs.addObserver(this, "profile-change-net-teardown", false);
+      Services.obs.addObserver(this, "profile-after-change");
+      Services.obs.addObserver(this, "profile-change-net-teardown");
     }
     else if (aTopic == "profile-after-change")
     {
       this.onProfileStartup();
     }
   },
 
 
--- a/mailnews/mime/src/jsmime.jsm
+++ b/mailnews/mime/src/jsmime.jsm
@@ -70,17 +70,17 @@ TextDecoder = FallbackTextDecoder;
 var CATEGORY_NAME = "custom-mime-encoder";
 Services.obs.addObserver(function (subject, topic, data) {
   subject = subject.QueryInterface(Components.interfaces.nsISupportsCString)
                    .data;
   if (data == CATEGORY_NAME) {
     let url = catman.getCategoryEntry(CATEGORY_NAME, subject);
     Services.scriptloader.loadSubScript(url, {}, "UTF-8");
   }
-}, "xpcom-category-entry-added", false);
+}, "xpcom-category-entry-added");
 
 var catman = Components.classes["@mozilla.org/categorymanager;1"]
                        .getService(Components.interfaces.nsICategoryManager);
 
 var entries = catman.enumerateCategory(CATEGORY_NAME);
 while (entries.hasMoreElements()) {
   let string = entries.getNext()
                       .QueryInterface(Components.interfaces.nsISupportsCString)
--- a/mailnews/mime/test/unit/test_structured_headers.js
+++ b/mailnews/mime/test/unit/test_structured_headers.js
@@ -49,17 +49,17 @@ add_task(function* check_custom_header()
   let url = Services.io.newFileURI(do_get_file("custom_header.js")).spec;
   let promise = new Promise((resolve, reject) => {
     function observer(subject, topic, data) {
       do_check_eq(topic, "xpcom-category-entry-added");
       do_check_eq(data, "custom-mime-encoder");
       resolve();
       Services.obs.removeObserver(observer, "xpcom-category-entry-added");
     }
-    Services.obs.addObserver(observer, "xpcom-category-entry-added", false);
+    Services.obs.addObserver(observer, "xpcom-category-entry-added");
   });
   Cc["@mozilla.org/categorymanager;1"]
     .getService(Ci.nsICategoryManager)
     .addCategoryEntry("custom-mime-encoder", "X-Unusual", url, false, true);
   // The category manager doesn't fire until a later timestep.
   yield promise;
   let headers = new StructuredHeaders();
   headers.setRawHeader("X-Unusual", "10", null);
--- a/mailnews/test/resources/logHelper.js
+++ b/mailnews/test/resources/logHelper.js
@@ -41,17 +41,17 @@ function logHelperHasInterestedListeners
  *
  * This is based on my (asuth') exmmad extension.
  */
 var _errorConsoleTunnel = {
   initialize: function () {
     Services.console.registerListener(this);
 
     // we need to unregister our listener at shutdown if we don't want explosions
-    Services.obs.addObserver(this, "quit-application", false);
+    Services.obs.addObserver(this, "quit-application");
   },
 
   shutdown: function () {
     Services.console.unregisterListener(this);
     Services.obs.removeObserver(this, "quit-application");
   },
 
   observe: function (aMessage, aTopic, aData) {
--- a/suite/browser/navigator.js
+++ b/suite/browser/navigator.js
@@ -197,45 +197,45 @@ const gFormSubmitObserver = {
 /**
 * Pref listener handler functions.
 * Both functions assume that observer.domain is set to
 * the pref domain we want to start/stop listening to.
 */
 function addPrefListener(observer)
 {
   try {
-    Services.prefs.addObserver(observer.domain, observer, false);
+    Services.prefs.addObserver(observer.domain, observer);
   } catch(ex) {
     dump("Failed to observe prefs: " + ex + "\n");
   }
 }
 
 function removePrefListener(observer)
 {
   try {
     Services.prefs.removeObserver(observer.domain, observer);
   } catch(ex) {
     dump("Failed to remove pref observer: " + ex + "\n");
   }
 }
 
 function addPopupPermListener(observer)
 {
-  Services.obs.addObserver(observer, "popup-perm-close", false);
+  Services.obs.addObserver(observer, "popup-perm-close");
 }
 
 function removePopupPermListener(observer)
 {
   Services.obs.removeObserver(observer, "popup-perm-close");
 }
 
 function addFormSubmitObserver(observer)
 {
   observer.init();
-  Services.obs.addObserver(observer, "invalidformsubmit", false);
+  Services.obs.addObserver(observer, "invalidformsubmit");
 }
 
 function removeFormSubmitObserver(observer)
 {
   Services.obs.removeObserver(observer, "invalidformsubmit");
 }
 
 /**
--- a/suite/browser/pageinfo/pageInfo.js
+++ b/suite/browser/pageinfo/pageInfo.js
@@ -602,17 +602,17 @@ function onCacheEntryAvailable(cacheEntr
       sizeText = gBundle.getFormattedString("mediaFileSize", [formatNumber(kbSize)]);
     }
     else
       sizeText = gStrings.unknown;
     gImageView.addRow([url, type, sizeText, alt, 1, elem, isBg, pageSize, persistent, mimeType]);
 
     // Add the observer, only once.
     if (gImageView.data.length == 1) {
-      Services.obs.addObserver(imagePermissionObserver, "perm-changed", false);
+      Services.obs.addObserver(imagePermissionObserver, "perm-changed");
     }
   }
   else {
     var i = gImageHash[url][type][alt];
     gImageView.data[i][COL_IMAGE_COUNT]++;
   }
 };
 
--- a/suite/browser/pageinfo/permissions.js
+++ b/suite/browser/pageinfo/permissions.js
@@ -72,17 +72,17 @@ function initPermission()
 }
 
 function onLoadPermission()
 {
   gPermPrincipal = gDocument.nodePrincipal;
   if (!gPermPrincipal.isSystemPrincipal) {
     var hostText = document.getElementById("hostText");
     hostText.value = gPermPrincipal.origin;
-    Services.obs.addObserver(permissionObserver, "perm-changed", false);
+    Services.obs.addObserver(permissionObserver, "perm-changed");
   }
   for (var i in gPermObj)
     initRow(i);
 }
 
 function onUnloadPermission()
 {
   if (!gPermPrincipal.isSystemPrincipal) {
--- a/suite/browser/tabbrowser.xml
+++ b/suite/browser/tabbrowser.xml
@@ -3122,18 +3122,18 @@
           t.width = 0;
           t.flex = 100;
           t.setAttribute("validate", "never");
           t.setAttribute("onerror", "this.parentNode.parentNode.parentNode.parentNode.addToMissedIconCache(this.getAttribute('image')); this.removeAttribute('image');");
           this.referenceTab = t;
 
           var os = Components.classes["@mozilla.org/observer-service;1"]
                              .getService(Components.interfaces.nsIObserverService);
-          os.addObserver(this, "browser:purge-session-history", false);
-          this.mPrefs.addObserver("browser.tabs.max_tabs_undo", this, false);
+          os.addObserver(this, "browser:purge-session-history");
+          this.mPrefs.addObserver("browser.tabs.max_tabs_undo", this);
 
           var onclick = this.getAttribute("oncontentclick");
           if (onclick)
             this.onContentClick = new Function("event", onclick);
         ]]>
       </constructor>
 
       <destructor>
--- a/suite/browser/test/browser/browser_bug561636.js
+++ b/suite/browser/test/browser/browser_bug561636.js
@@ -356,17 +356,17 @@ function test8()
       gObserver.notifyInvalidSubmit = function () {};
       gBrowser.removeTab(tab);
 
       // Next test
       executeSoon(test9);
     });
   };
 
-  Services.obs.addObserver(gObserver, "invalidformsubmit", false);
+  Services.obs.addObserver(gObserver, "invalidformsubmit");
 
   tab.linkedBrowser.addEventListener("load", function test8TabLBLoad(aEvent) {
     tab.linkedBrowser.removeEventListener("load", test8TabLBLoad, true);
 
     isnot(gBrowser.selectedTab, tab,
           "This tab should have been loaded in background");
 
     tab.linkedBrowser.contentDocument.getElementById('s').click();
--- a/suite/browser/test/browser/browser_pageInfo.js
+++ b/suite/browser/test/browser/browser_pageInfo.js
@@ -2,17 +2,17 @@ function test() {
   waitForExplicitFinish();
 
   var pageInfo;
 
   gBrowser.selectedTab = gBrowser.addTab();
   gBrowser.selectedBrowser.addEventListener("load", function loadListener() {
     gBrowser.selectedBrowser.removeEventListener("load", loadListener, true);
 
-    Services.obs.addObserver(observer, "page-info-dialog-loaded", false);
+    Services.obs.addObserver(observer, "page-info-dialog-loaded");
     pageInfo = BrowserPageInfo();
   }, true);
   content.location =
     "https://example.com/browser/suite/browser/test/browser/feed_tab.html";
 
   function observer(win, topic, data) {
     Services.obs.removeObserver(observer, "page-info-dialog-loaded");
     handlePageInfo();
--- a/suite/browser/test/browser/browser_pluginCrashCommentAndURL.js
+++ b/suite/browser/test/browser/browser_pluginCrashCommentAndURL.js
@@ -23,17 +23,17 @@ function test() {
   let noReport = env.get("MOZ_CRASHREPORTER_NO_REPORT");
   let serverURL = env.get("MOZ_CRASHREPORTER_URL");
   env.set("MOZ_CRASHREPORTER_NO_REPORT", "");
   env.set("MOZ_CRASHREPORTER_URL", SERVER_URL);
 
   let tab = gBrowser.loadOneTab("about:blank", { inBackground: false });
   let browser = tab.linkedBrowser;
   browser.addEventListener("PluginCrashed", onCrash);
-  Services.obs.addObserver(onSubmitStatus, "crash-report-status", false);
+  Services.obs.addObserver(onSubmitStatus, "crash-report-status");
 
   registerCleanupFunction(function cleanUp() {
     env.set("MOZ_CRASHREPORTER_NO_REPORT", noReport);
     env.set("MOZ_CRASHREPORTER_URL", serverURL);
     gBrowser.selectedBrowser.removeEventListener("PluginCrashed", onCrash);
     Services.obs.removeObserver(onSubmitStatus, "crash-report-status");
     gBrowser.removeCurrentTab();
   });
--- a/suite/browser/test/browser/browser_pluginnotification.js
+++ b/suite/browser/test/browser/browser_pluginnotification.js
@@ -356,17 +356,17 @@ function test11a() {
   prepareTest(test11b, "about:blank");
 }
 
 // Tests that the going back will reshow the notification for click-to-play plugins (part 2/4)
 function test11b() {
   var popupNotification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
   ok(!popupNotification, "Test 11b, Should not have a click-to-play notification");
 
-  Services.obs.addObserver(test11c, "PopupNotifications-updateNotShowing", false);
+  Services.obs.addObserver(test11c, "PopupNotifications-updateNotShowing");
   gTestBrowser.contentWindow.history.back();
 }
 
 // Tests that the going back will reshow the notification for click-to-play plugins (part 3/4)
 function test11c() {
   Services.obs.removeObserver(test11c, "PopupNotifications-updateNotShowing", false);
   var condition = () => PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
   waitForCondition(condition, test11d, "Test 11c, waited too long for click-to-play-plugin notification");
--- a/suite/browser/test/browser/browser_popupNotification.js
+++ b/suite/browser/test/browser/browser_popupNotification.js
@@ -38,17 +38,17 @@ function runNextTest() {
     function observer() {
       Services.obs.removeObserver(observer, "PopupNotifications-" + topic);
       delete gActiveObservers["PopupNotifications-" + topic];
 
       info("[Test #" + gTestIndex + "] observer for " + topic + " called");
       nextTest[topic]();
       goNext();
     }
-    Services.obs.addObserver(observer, "PopupNotifications-" + topic, false);
+    Services.obs.addObserver(observer, "PopupNotifications-" + topic);
     gActiveObservers["PopupNotifications-" + topic] = observer;
   }
 
   if (nextTest.backgroundShow) {
     addObserver("backgroundShow");
   } else if (nextTest.updateNotShowing) {
     addObserver("updateNotShowing");
   } else {
--- a/suite/browser/test/browser/head.js
+++ b/suite/browser/test/browser/head.js
@@ -57,17 +57,17 @@ function whenNewWindowLoaded(aOptions, a
 
 function updateBlocklist(aCallback) {
   var blocklistNotifier = Components.classes["@mozilla.org/extensions/blocklist;1"]
                                     .getService(Components.interfaces.nsITimerCallback);
   var observer = function() {
     Services.obs.removeObserver(observer, "blocklist-updated");
     SimpleTest.executeSoon(aCallback);
   };
-  Services.obs.addObserver(observer, "blocklist-updated", false);
+  Services.obs.addObserver(observer, "blocklist-updated");
   blocklistNotifier.notify(null);
 }
 
 var _originalTestBlocklistURL = null;
 function setAndUpdateBlocklist(aURL, aCallback) {
   if (!_originalTestBlocklistURL)
     _originalTestBlocklistURL = Services.prefs.getCharPref("extensions.blocklist.url");
   Services.prefs.setCharPref("extensions.blocklist.url", aURL);
--- a/suite/browser/urlbarBindings.xml
+++ b/suite/browser/urlbarBindings.xml
@@ -46,17 +46,17 @@
                    xbl:inherits="for=id,nomatch"/>
       </xul:popupset>
 
       <children includes="menupopup"/>
     </content>
 
     <implementation implements="nsIDOMEventListener">
       <constructor><![CDATA[
-        this.mPrefs.addObserver("browser.urlbar", this.mPrefObserver, false);
+        this.mPrefs.addObserver("browser.urlbar", this.mPrefObserver);
 
         this.updatePref("browser.urlbar.showPopup");
         this.updatePref("browser.urlbar.autoFill");
         this.updatePref("browser.urlbar.showSearch");
         this.updatePref("browser.urlbar.formatting.enabled");
         this.inputField.controllers.insertControllerAt(0, this._editItemsController);
         this.inputField.addEventListener("overflow", this);
         this.inputField.addEventListener("underflow", this);
@@ -345,20 +345,20 @@
         <xul:treechildren anonid="treebody" class="autocomplete-treebody" flex="1"/>
       </xul:tree>
       <xul:box role="search-box" class="autocomplete-search-box"/>
     </content>
 
     <implementation>
       <constructor><![CDATA[
         // listen for changes to default search engine
-        this.mPrefs.addObserver("browser.search", this.mObserver, false);
-        this.mPrefs.addObserver("browser.urlbar", this.mObserver, false);
+        this.mPrefs.addObserver("browser.search", this.mObserver);
+        this.mPrefs.addObserver("browser.urlbar", this.mObserver);
         this.mObSvc.addObserver(this.mObserver,
-                                "browser-search-engine-modified", false);
+                                "browser-search-engine-modified");
         this.updateEngines();
       ]]></constructor>
 
       <destructor><![CDATA[
         this.mPrefs.removeObserver("browser.search", this.mObserver);
         this.mPrefs.removeObserver("browser.urlbar", this.mObserver);
         this.mObSvc.removeObserver(this.mObserver,
                                    "browser-search-engine-modified");
--- a/suite/browser/webDeveloperOverlay.js
+++ b/suite/browser/webDeveloperOverlay.js
@@ -94,17 +94,17 @@ var gWebDeveloper = {
         // Don't use gDevToolsBrowser.updateCommandAvailability() at the moment
         // because some tools aren't working.
         if (!gDevToolsBrowser._old_updateCommandAvailability) {
           gDevToolsBrowser._old_updateCommandAvailability = gDevToolsBrowser.updateCommandAvailability;
           gDevToolsBrowser.updateCommandAvailability = this.updateCommandAvailability;
         }
         // Add Devtools menuitems, observers, and listeners
         gDevToolsBrowser.registerBrowserWindow(window);
-        Services.prefs.addObserver(this.devtoolsThemePref, this, false);
+        Services.prefs.addObserver(this.devtoolsThemePref, this);
         this.updateDevtoolsThemeAttribute();
         break;
 
       case "unload":
         window.removeEventListener("unload", gWebDeveloper);
         gDevToolsBrowser.forgetBrowserWindow(window);
         Services.prefs.removeObserver(this.devtoolsThemePref, this);
 
--- a/suite/common/bindings/findbar.xml
+++ b/suite/common/bindings/findbar.xml
@@ -28,19 +28,19 @@
       <constructor><![CDATA[
         var prefsvc =
           Components.classes["@mozilla.org/preferences-service;1"]
                     .getService(Components.interfaces.nsIPrefBranch);
 
         prefsvc.removeObserver("accessibility.typeaheadfind",
                                this._observer);
         prefsvc.addObserver("accessibility.typeaheadfind.autostart",
-                            this._suiteObserver, false);
+                            this._suiteObserver);
         prefsvc.addObserver("accessibility.typeaheadfind.usefindbar",
-                            this._suiteObserver, false);
+                            this._suiteObserver);
 
         this._findAsYouType =
           prefsvc.getBoolPref("accessibility.typeaheadfind.autostart");
         this._useFindbar =
           prefsvc.getBoolPref("accessibility.typeaheadfind.usefindbar");
       ]]></constructor>
 
       <field name="_suiteObserver"><![CDATA[({
--- a/suite/common/bindings/notification.xml
+++ b/suite/common/bindings/notification.xml
@@ -1992,33 +1992,33 @@
       </method>
       <constructor>
         <![CDATA[
           Components.utils.import("resource://gre/modules/Services.jsm");
           Components.utils.import("resource://gre/modules/BrowserUtils.jsm");
 
           var os = Components.classes["@mozilla.org/observer-service;1"]
                              .getService(Components.interfaces.nsIObserverService);
-          os.addObserver(this, "indexedDB-permissions-prompt", false);
-          os.addObserver(this, "indexedDB-quota-prompt", false);
-          os.addObserver(this, "indexedDB-quota-cancel", false);
-          os.addObserver(this, "addon-install-blocked", false);
-          os.addObserver(this, "addon-install-complete", false);
-          os.addObserver(this, "addon-install-disabled", false);
-          os.addObserver(this, "addon-install-failed", false);
-          os.addObserver(this, "addon-install-started", false);
-          os.addObserver(this, "offline-cache-update-completed", false);
-          os.addObserver(this, "perm-changed", false);
-          os.addObserver(this, "formsubmit", false);
-
-          this._prefs.addObserver("plugins.hide_infobar_for_outdated_plugin", this, false);
-          this._prefs.addObserver("plugins.hide_infobar_for_carbon_failure_plugin", this, false);
-          this._prefs.addObserver("plugins.hide_infobar_for_missing_plugin", this, false);
-          this._prefs.addObserver("privacy.popups.showBrowserMessage", this, false);
-          this._prefs.addObserver("dom.disable_open_during_load", this, false);
+          os.addObserver(this, "indexedDB-permissions-prompt");
+          os.addObserver(this, "indexedDB-quota-prompt");
+          os.addObserver(this, "indexedDB-quota-cancel");
+          os.addObserver(this, "addon-install-blocked");
+          os.addObserver(this, "addon-install-complete");
+          os.addObserver(this, "addon-install-disabled");
+          os.addObserver(this, "addon-install-failed");
+          os.addObserver(this, "addon-install-started");
+          os.addObserver(this, "offline-cache-update-completed");
+          os.addObserver(this, "perm-changed");
+          os.addObserver(this, "formsubmit");
+
+          this._prefs.addObserver("plugins.hide_infobar_for_outdated_plugin", this);
+          this._prefs.addObserver("plugins.hide_infobar_for_carbon_failure_plugin", this);
+          this._prefs.addObserver("plugins.hide_infobar_for_missing_plugin", this);
+          this._prefs.addObserver("privacy.popups.showBrowserMessage", this);
+          this._prefs.addObserver("dom.disable_open_during_load", this);
 
           this.addProgressListener();
 
           if ("nsICrashReporter" in Components.interfaces)
             Components.utils.import("resource://gre/modules/CrashSubmit.jsm", this);
         ]]>
       </constructor>
 
--- a/suite/common/bindings/toolbar.xml
+++ b/suite/common/bindings/toolbar.xml
@@ -170,17 +170,17 @@
       </constructor>
     </implementation>
   </binding>
 
   <binding id="grippytoolbar-primary" extends="chrome://communicator/content/bindings/toolbar.xml#grippytoolbar">
     <implementation implements="nsIObserver">
       <constructor>
         <![CDATA[
-          this.prefs.addObserver(this.domain, this, false);
+          this.prefs.addObserver(this.domain, this);
           if (this.prefs.getIntPref(this.domain) != 2)
             this.observe(this.prefs, "nsPref:changed", this.domain);
         ]]>
       </constructor>
 
       <destructor>
         this.prefs.removeObserver(this.domain, this);
       </destructor>
--- a/suite/common/bookmarks/editBookmarkOverlay.js
+++ b/suite/common/bookmarks/editBookmarkOverlay.js
@@ -201,17 +201,17 @@ var gEditItemOverlay = {
 
     this._showHideRows();
 
     // observe changes
     if (!this._observersAdded) {
       // Single bookmarks observe any change.  History entries and multiEdit
       // observe only tags changes, through bookmarks.
       if (this._itemId != -1 || this._uri || this._multiEdit)
-        PlacesUtils.bookmarks.addObserver(this, false);
+        PlacesUtils.bookmarks.addObserver(this);
       window.addEventListener("unload", this);
       this._observersAdded = true;
     }
 
     this._initialized = true;
   },
 
   /**
--- a/suite/common/dataman/dataman.js
+++ b/suite/common/dataman/dataman.js
@@ -47,23 +47,23 @@ var gDataman = {
 
   initialize: function dataman_initialize() {
     try {
       this.debug = Services.prefs.getBoolPref("data_manager.debug");
     }
     catch (e) {}
     this.bundle = document.getElementById("datamanBundle");
 
-    Services.obs.addObserver(this, "cookie-changed", false);
-    Services.obs.addObserver(this, "perm-changed", false);
-    Services.obs.addObserver(this, "passwordmgr-storage-changed", false);
+    Services.obs.addObserver(this, "cookie-changed");
+    Services.obs.addObserver(this, "perm-changed");
+    Services.obs.addObserver(this, "passwordmgr-storage-changed");
     // Services.contentPrefs.addObserver(null, this);
-    Services.obs.addObserver(this, "satchel-storage-changed", false);
-    Services.obs.addObserver(this, "dom-storage-changed", false);
-    Services.obs.addObserver(this, "dom-storage2-changed", false);
+    Services.obs.addObserver(this, "satchel-storage-changed");
+    Services.obs.addObserver(this, "dom-storage-changed");
+    Services.obs.addObserver(this, "dom-storage2-changed");
 
     this.timer = Components.classes["@mozilla.org/timer;1"]
                            .createInstance(Components.interfaces.nsITimer);
 
     gTabs.initialize();
     gDomains.initialize();
 
     if ("arguments" in window &&
--- a/suite/common/dataman/tests/browser_dataman_basics.js
+++ b/suite/common/dataman/tests/browser_dataman_basics.js
@@ -89,17 +89,17 @@ function test() {
 
   let testObs = {
     observe: function(aSubject, aTopic, aData) {
       if (aTopic == DATAMAN_LOADED) {
         Services.obs.removeObserver(testObs, DATAMAN_LOADED);
         ok(true, "Data Manager is loaded");
 
         win = content.wrappedJSObject;
-        Services.obs.addObserver(testObs, TEST_DONE, false);
+        Services.obs.addObserver(testObs, TEST_DONE);
         // Trigger the first test now!
         Services.obs.notifyObservers(window, TEST_DONE, null);
       }
       else {
         // TEST_DONE triggered, run next test
         info("run test #" + (testIndex + 1) + " of " + testFuncs.length +
              " (" + testFuncs[testIndex].name + ")");
         setTimeout(testFuncs[testIndex++], 0, win);
@@ -110,17 +110,17 @@ function test() {
           Services.cookies.removeAll();
           gLocSvc.fhist.removeAllEntries();
           setTimeout(finish, 0);
         }
       }
     }
   };
   waitForExplicitFinish();
-  Services.obs.addObserver(testObs, DATAMAN_LOADED, false);
+  Services.obs.addObserver(testObs, DATAMAN_LOADED);
 }
 
 var testFuncs = [
 function test_open_state(aWin) {
   is(aWin.document.documentElement.id, "dataman-page",
      "The active tab is the Data Manager");
   is(aWin.gDomains.tree.view.rowCount, kPreexistingDomains + 6,
      "The correct number of domains is listed");
--- a/suite/common/dataman/tests/browser_dataman_callviews.js
+++ b/suite/common/dataman/tests/browser_dataman_callviews.js
@@ -43,17 +43,17 @@ function test() {
           Services.cookies.remove("getpersonas.com", "name0", "value0", false);
           Services.cookies.remove("drumbeat.org", "name1", "value1", false);
           finish();
         }
       }
     }
   };
   waitForExplicitFinish();
-  Services.obs.addObserver(testObs, DATAMAN_LOADED, false);
+  Services.obs.addObserver(testObs, DATAMAN_LOADED);
 }
 
 var testFuncs = [
 function test_load_basic(aWin) {
   is(aWin.gDomains.tree.view.selection.count, 1,
     "Step " + testIndex + ": One domain is selected");
   is(aWin.gDomains.selectedDomain.title, "example.org",
     "Step " + testIndex + ": The correct domain is selected");
--- a/suite/common/downloads/tests/browser/browser_nsISuiteDownloadManagerUI.js
+++ b/suite/common/downloads/tests/browser/browser_nsISuiteDownloadManagerUI.js
@@ -62,10 +62,10 @@ function test()
       for (let t of testFuncs)
         t(win);
 
       // finish will be called by the last test that also hides the DM UI
     }
   };
 
   waitForExplicitFinish();
-  obs.addObserver(testObs, DLMGR_UI_DONE, false);
+  obs.addObserver(testObs, DLMGR_UI_DONE);
 }
--- a/suite/common/downloads/tests/chrome/test_action_keys_respect_focus.xul
+++ b/suite/common/downloads/tests/chrome/test_action_keys_respect_focus.xul
@@ -361,17 +361,17 @@ function test()
           obs.removeObserver(testObs, DLMGR_UI_DONE);
           win.close();
           SimpleTest.finish();
 
           break;
       }
   }
 
-  obs.addObserver(testObs, DLMGR_UI_DONE, false);
+  obs.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_basic_functionality.xul
+++ b/suite/common/downloads/tests/chrome/test_basic_functionality.xul
@@ -265,17 +265,17 @@ function test()
       win.close();
       dmFile.remove(false);
       os.removeObserver(testObs, DLMGR_UI_DONE);
       SimpleTest.finish();
     }
   };
 
   // Register with the observer service
-  os.addObserver(testObs, DLMGR_UI_DONE, false);
+  os.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_cleanup_search.xul
+++ b/suite/common/downloads/tests/chrome/test_cleanup_search.xul
@@ -152,17 +152,17 @@ function test()
           win.close();
           obs.removeObserver(testObs, DLMGR_UI_DONE);
           SimpleTest.finish();
 
           break;
       }
     }
   };
-  obs.addObserver(testObs, DLMGR_UI_DONE, false);
+  obs.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_clear_button_disabled.xul
+++ b/suite/common/downloads/tests/chrome/test_clear_button_disabled.xul
@@ -183,17 +183,17 @@ function runTest()
           db.executeSimpleSQL("DELETE FROM moz_downloads");
           SimpleTest.finish();
 
           break;
       }
     }
   };
 
-  obs.addObserver(testObs, DLMGR_UI_DONE, false);
+  obs.addObserver(testObs, DLMGR_UI_DONE);
 
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
 
--- a/suite/common/downloads/tests/chrome/test_close_download_manager.xul
+++ b/suite/common/downloads/tests/chrome/test_close_download_manager.xul
@@ -96,17 +96,17 @@ function runTest()
       // if we add more ways to close DM with keys, add more cases here
       switch(testPhase++) {
         case 0:
           obs.removeObserver(testObs, DLMGR_UI_DONE);
           testCloseDMWithAccelKey(win);
       }
   }
 
-  obs.addObserver(testObs, DLMGR_UI_DONE, false);
+  obs.addObserver(testObs, DLMGR_UI_DONE);
 
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
 
--- a/suite/common/downloads/tests/chrome/test_delete_key_cancels.xul
+++ b/suite/common/downloads/tests/chrome/test_delete_key_cancels.xul
@@ -183,17 +183,17 @@ function test()
 
       addDownload();
       // we need to focus the download as well
       doc.getElementById("downloadTree").view.selection.select(0);
       os.removeObserver(testObs, DLMGR_UI_DONE);
   }
 
   // Register with the observer service
-  os.addObserver(testObs, DLMGR_UI_DONE, false);
+  os.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_delete_key_removes.xul
+++ b/suite/common/downloads/tests/chrome/test_delete_key_removes.xul
@@ -181,17 +181,17 @@ function test()
 
       win.close();
       dmFile.remove(false);
       os.removeObserver(testObs, DLMGR_UI_DONE);
       SimpleTest.finish();
   }
 
   // Register with the observer service
-  os.addObserver(testObs, DLMGR_UI_DONE, false);
+  os.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_drag.xul
+++ b/suite/common/downloads/tests/chrome/test_drag.xul
@@ -185,17 +185,17 @@ function test()
       win.close();
       realFile.remove(false);
       os.removeObserver(testObs, DLMGR_UI_DONE);
       SimpleTest.finish();
     }
   };
 
   // Register with the observer service
-  os.addObserver(testObs, DLMGR_UI_DONE, false);
+  os.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_enter_dblclick_opens.xul
+++ b/suite/common/downloads/tests/chrome/test_enter_dblclick_opens.xul
@@ -228,17 +228,17 @@ function test()
 
       // add second download: FINISHED state, actually created
       // (checked by cmd_open)
       addDownload();
 
       obs.removeObserver(testObs, DLMGR_UI_DONE);
   }
 
-  obs.addObserver(testObs, DLMGR_UI_DONE, false);
+  obs.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_multi_select.xul
+++ b/suite/common/downloads/tests/chrome/test_multi_select.xul
@@ -185,17 +185,17 @@ function test()
       }
     }
 
     // We're done!
     win.close();
     obs.removeObserver(testObs, DLMGR_UI_DONE);
     SimpleTest.finish();
   }
-  obs.addObserver(testObs, DLMGR_UI_DONE, false);
+  obs.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_multiword_search.xul
+++ b/suite/common/downloads/tests/chrome/test_multiword_search.xul
@@ -153,17 +153,17 @@ function test()
           win.close();
           obs.removeObserver(testObs, DLMGR_UI_DONE);
           SimpleTest.finish();
 
           break;
       }
     }
   };
-  obs.addObserver(testObs, DLMGR_UI_DONE, false);
+  obs.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_open_properties.xul
+++ b/suite/common/downloads/tests/chrome/test_open_properties.xul
@@ -179,17 +179,17 @@ function runTest()
           db.executeSimpleSQL("DELETE FROM moz_downloads");
           SimpleTest.finish();
 
           break;
       }
     }
   };
 
-  obs.addObserver(testObs, DLMGR_UI_DONE, false);
+  obs.addObserver(testObs, DLMGR_UI_DONE);
 
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
 
--- a/suite/common/downloads/tests/chrome/test_removeDownload_updates_ui.xul
+++ b/suite/common/downloads/tests/chrome/test_removeDownload_updates_ui.xul
@@ -132,17 +132,17 @@ function test()
       win.close();
       dmFile.remove(false);
       os.removeObserver(testObs, DLMGR_UI_DONE);
       SimpleTest.finish();
     }
   }
 
   // Register with the observer service
-  os.addObserver(testObs, DLMGR_UI_DONE, false);
+  os.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_search_clearlist.xul
+++ b/suite/common/downloads/tests/chrome/test_search_clearlist.xul
@@ -148,17 +148,17 @@ function test()
           win.close();
           obs.removeObserver(testObs, DLMGR_UI_DONE);
           SimpleTest.finish();
 
           break;
       }
     }
   };
-  obs.addObserver(testObs, DLMGR_UI_DONE, false);
+  obs.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_search_keys.xul
+++ b/suite/common/downloads/tests/chrome/test_search_keys.xul
@@ -107,17 +107,17 @@ function test()
         t(win);
 
       win.close();
       os.removeObserver(testObs, DLMGR_UI_DONE);
       SimpleTest.finish();
   }
 
   // Register with the observer service
-  os.addObserver(testObs, DLMGR_UI_DONE, false);
+  os.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_select_all.xul
+++ b/suite/common/downloads/tests/chrome/test_select_all.xul
@@ -126,17 +126,17 @@ function test()
       is(downloadView.rowCount, 0, "All downloads removed");
 
       // We're done!
       win.close();
       obs.removeObserver(testObs, DLMGR_UI_DONE);
       SimpleTest.finish();
   }
 
-  obs.addObserver(testObs, DLMGR_UI_DONE, false);
+  obs.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_space_key_pauses_resumes.xul
+++ b/suite/common/downloads/tests/chrome/test_space_key_pauses_resumes.xul
@@ -204,17 +204,17 @@ function test()
 
       addDownload();
       // we need to focus the download as well
       doc.getElementById("downloadTree").view.selection.select(0);
       os.removeObserver(testObs, DLMGR_UI_DONE);
   }
 
   // Register with the observer service
-  os.addObserver(testObs, DLMGR_UI_DONE, false);
+  os.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_space_key_retries.xul
+++ b/suite/common/downloads/tests/chrome/test_space_key_retries.xul
@@ -181,17 +181,17 @@ function test()
 
       addDownload();
       // we need to focus the download as well
       doc.getElementById("downloadTree").view.selection.select(0);
       os.removeObserver(testObs, DLMGR_UI_DONE);
   }
 
   // Register with the observer service
-  os.addObserver(testObs, DLMGR_UI_DONE, false);
+  os.addObserver(testObs, DLMGR_UI_DONE);
 
   // Show the Download Manager UI
   Components.classes["@mozilla.org/download-manager-ui;1"]
             .getService(Components.interfaces.nsISuiteDownloadManagerUI)
             .showManager();
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/downloads/tests/chrome/test_ui_stays_open_on_alert_clickback.xul
+++ b/suite/common/downloads/tests/chrome/test_ui_stays_open_on_alert_clickback.xul
@@ -93,17 +93,17 @@ function test()
       win.close();
       setClose(false);
       os.removeObserver(testObs, DLMGR_UI_DONE);
       SimpleTest.finish();
     }
   };
 
   // Register with the observer service
-  os.addObserver(testObs, DLMGR_UI_DONE, false);
+  os.addObserver(testObs, DLMGR_UI_DONE);
 
   // Simulate an alert click with pref set to true
   setClose(true);
   dm.QueryInterface(Components.interfaces.nsIObserver)
     .observe(null, "alertclickcallback", null);
 
   SimpleTest.waitForExplicitFinish();
 }
--- a/suite/common/history/tree.xml
+++ b/suite/common/history/tree.xml
@@ -99,17 +99,17 @@
           var result = PlacesUtils.history.executeQueries(queries, queries.length,
                                                           options);
 
           var treeView = new PlacesTreeView();
 
           // Observer removal is done within the view itself. When the tree
           // goes away, treeboxobject calls view.setTree(null), which then
           // calls removeObserver.
-          result.addObserver(treeView, false);
+          result.addObserver(treeView);
           this.view = treeView;
           if (!this._controller) {
             this._controller = new PlacesController(this);
             this.controllers.appendController(this._controller);
           }
         ]]></body>
       </method>
 
--- a/suite/common/permissions/cookieViewer.js
+++ b/suite/common/permissions/cookieViewer.js
@@ -46,18 +46,18 @@ function Startup() {
   // load in the cookies and permissions
   cookiesTree = document.getElementById("cookiesTree");
   permissionsTree = document.getElementById("permissionsTree");
   loadCookies();
   loadPermissions();
 
   // be prepared to reload the display if anything changes
   kObserverService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
-  kObserverService.addObserver(cookieReloadDisplay, "cookie-changed", false);
-  kObserverService.addObserver(cookieReloadDisplay, "perm-changed", false);
+  kObserverService.addObserver(cookieReloadDisplay, "cookie-changed");
+  kObserverService.addObserver(cookieReloadDisplay, "perm-changed");
 
   // filter the table if requested by caller
   if (window.arguments &&
       window.arguments[0] &&
       window.arguments[0].filterString)
     setFilter(window.arguments[0].filterString);
 
   document.getElementById("filter").focus();
--- a/suite/common/places/browserPlacesViews.js
+++ b/suite/common/places/browserPlacesViews.js
@@ -47,17 +47,17 @@ PlacesViewBase.prototype = {
     let history = PlacesUtils.history;
     let queries = { }, options = { };
     history.queryStringToQueries(val, queries, { }, options);
     if (!queries.value.length)
       queries.value = [history.getNewQuery()];
 
     let result = history.executeQueries(queries.value, queries.value.length,
                                         options.value);
-    result.addObserver(this, false);
+    result.addObserver(this);
     return val;
   },
 
   _result: null,
   get result() {
     return this._result;
   },
   set result(val) {
--- a/suite/common/places/nsPlacesAutoComplete.js
+++ b/suite/common/places/nsPlacesAutoComplete.js
@@ -463,17 +463,17 @@ function nsPlacesAutoComplete()
                 getService(Ci.nsIPrefService).
                 getBranch(kBrowserUrlbarBranch);
   this._syncEnabledPref();
   this._loadPrefs(true);
 
   // register observers
   this._os = Cc["@mozilla.org/observer-service;1"].
               getService(Ci.nsIObserverService);
-  this._os.addObserver(this, kTopicShutdown, false);
+  this._os.addObserver(this, kTopicShutdown);
 
 }
 
 nsPlacesAutoComplete.prototype = {
   //////////////////////////////////////////////////////////////////////////////
   //// nsIAutoCompleteSearch
 
   startSearch: function PAC_startSearch(aSearchString, aSearchParam,
@@ -915,17 +915,17 @@ nsPlacesAutoComplete.prototype = {
     // Validate matchBehavior; default to MATCH_BOUNDARY_ANYWHERE.
     if (this._matchBehavior != MATCH_ANYWHERE &&
         this._matchBehavior != MATCH_BOUNDARY &&
         this._matchBehavior != MATCH_BEGINNING) {
       this._matchBehavior = MATCH_BOUNDARY_ANYWHERE;
     }
     // register observer
     if (aRegisterObserver) {
-      this._prefs.addObserver("", this, false);
+      this._prefs.addObserver("", this);
     }
   },
 
   /**
    * Given an array of tokens, this function determines which query should be
    * ran.  It also removes any special search tokens.
    *
    * @param aTokens
--- a/suite/common/places/tests/browser/browser_library_views_liveupdate.js
+++ b/suite/common/places/tests/browser/browser_library_views_liveupdate.js
@@ -30,18 +30,18 @@ function test() {
 }
 
 /**
  * Adds bookmarks observer, and executes a bunch of bookmarks operations.
  */
 function startTest() {
   var bs = PlacesUtils.bookmarks;
   // Add observers.
-  bs.addObserver(bookmarksObserver, false);
-  PlacesUtils.annotations.addObserver(bookmarksObserver, false);
+  bs.addObserver(bookmarksObserver);
+  PlacesUtils.annotations.addObserver(bookmarksObserver);
   var addedBookmarks = [];
 
   // MENU
   ok(true, "*** Acting on menu bookmarks");
   var id = bs.insertBookmark(bs.bookmarksMenuFolder,
                              PlacesUtils._uri("http://bm1.mozilla.org/"),
                              bs.DEFAULT_INDEX,
                              "bm1");
--- a/suite/common/places/tests/browser/head.js
+++ b/suite/common/places/tests/browser/head.js
@@ -28,17 +28,17 @@ function openLibrary(callback) {
  *
  * @param aCallback
  *        Function to be called when done.
  */
 function waitForClearHistory(aCallback) {
   Services.obs.addObserver(function observeCH(aSubject, aTopic, aData) {
     Services.obs.removeObserver(observeCH, PlacesUtils.TOPIC_EXPIRATION_FINISHED);
     aCallback();
-  }, PlacesUtils.TOPIC_EXPIRATION_FINISHED, false);
+  }, PlacesUtils.TOPIC_EXPIRATION_FINISHED);
   PlacesUtils.bhistory.removeAllPages();
 }
 
 /**
  * Asynchronously adds visits to a page, invoking a callback function when done.
  *
  * @param aPlaceInfo
  *        Can be an nsIURI, in such a case a single LINK visit will be added.
--- a/suite/common/places/tests/chrome/test_bug549491.xul
+++ b/suite/common/places/tests/chrome/test_bug549491.xul
@@ -88,16 +88,16 @@
     function waitForClearHistory(aCallback) {
       const TOPIC_EXPIRATION_FINISHED = "places-expiration-finished";
       let observer = {
         observe: function(aSubject, aTopic, aData) {
           Services.obs.removeObserver(this, TOPIC_EXPIRATION_FINISHED);
           aCallback();
         }
       };
-      Services.obs.addObserver(observer, TOPIC_EXPIRATION_FINISHED, false);
+      Services.obs.addObserver(observer, TOPIC_EXPIRATION_FINISHED);
       let hs = Cc["@mozilla.org/browser/nav-history-service;1"].
                getService(Ci.nsINavHistoryService);
       hs.QueryInterface(Ci.nsIBrowserHistory).removeAllPages();
    }
 
   ]]></script>
 </window>
--- a/suite/common/places/tests/chrome/test_treeview_date.xul
+++ b/suite/common/places/tests/chrome/test_treeview_date.xul
@@ -169,17 +169,17 @@
     function waitForClearHistory(aCallback) {
       const TOPIC_EXPIRATION_FINISHED = "places-expiration-finished";
       let observer = {
         observe: function(aSubject, aTopic, aData) {
           Services.obs.removeObserver(this, TOPIC_EXPIRATION_FINISHED);
           aCallback();
         }
       };
-      Services.obs.addObserver(observer, TOPIC_EXPIRATION_FINISHED, false);
+      Services.obs.addObserver(observer, TOPIC_EXPIRATION_FINISHED);
       let hs = Cc["@mozilla.org/browser/nav-history-service;1"].
                getService(Ci.nsINavHistoryService);
       hs.QueryInterface(Ci.nsIBrowserHistory).removeAllPages();
    }
 
   ]]>
   </script>
 </window>
--- a/suite/common/places/tests/head_common.js
+++ b/suite/common/places/tests/head_common.js
@@ -366,27 +366,27 @@ function check_no_bookmarks() {
  * @rejects Never.
  */
 function promiseTopicObserved(aTopic)
 {
   return new Promise(resolve => {
     Services.obs.addObserver(function observe(aSubject, aTopic, aData) {
       Services.obs.removeObserver(observe, aTopic);
       resolve([aSubject, aData]);
-    }, aTopic, false);
+    }, aTopic);
   });
 }
 
 /**
  * Simulates a Places shutdown.
  */
 var shutdownPlaces = function() {
   do_print("shutdownPlaces: starting");
   let promise = new Promise(resolve => {
-    Services.obs.addObserver(resolve, "places-connection-closed", false);
+    Services.obs.addObserver(resolve, "places-connection-closed");
   });
   let hs = PlacesUtils.history.QueryInterface(Ci.nsIObserver);
   hs.observe(null, "profile-change-teardown", null);
   do_print("shutdownPlaces: sent profile-change-teardown");
   hs.observe(null, "test-simulate-places-shutdown", null);
   do_print("shutdownPlaces: sent test-simulate-places-shutdown");
   return promise.then(() => {
     do_print("shutdownPlaces: complete");
--- a/suite/common/places/tests/unit/test_PUIU_makeTransaction.js
+++ b/suite/common/places/tests/unit/test_PUIU_makeTransaction.js
@@ -52,17 +52,17 @@ function waitForBookmarkNotification(aNo
     },
     onItemMoved: function onItemMoved(aItemId, aOldParentId, aOldIndex,
                                       aNewParentId, aNewIndex, aItemType)
     {
       this.validate(arguments.callee.name, { id: aItemId,
                                              index: aNewIndex,
                                              type: aItemType });
     }
-  }, false);
+  });
 }
 
 function wrapNodeByIdAndParent(aItemId, aParentId)
 {
   let wrappedNode;
   let root = PlacesUtils.getFolderContents(aParentId, false, false).root;
   for (let i = 0; i < root.childCount; ++i) {
     let node = root.getChild(i);
--- a/suite/common/places/tests/unit/test_browserGlue_corrupt.js
+++ b/suite/common/places/tests/unit/test_browserGlue_corrupt.js
@@ -64,17 +64,17 @@ function run_test() {
   let hs = Cc["@mozilla.org/browser/nav-history-service;1"].
            getService(Ci.nsINavHistoryService);
   // Check the database was corrupt.
   // nsSuiteGlue uses databaseStatus to manage initialization.
   do_check_eq(hs.databaseStatus, hs.DATABASE_STATUS_CORRUPT);
 
   // The test will continue once restore has finished and smart bookmarks
   // have been created.
-  bs.addObserver(bookmarksObserver, false);
+  bs.addObserver(bookmarksObserver);
 }
 
 function continue_test() {
   // Check that JSON backup has been restored.
   // Notice restore from JSON notification is fired before smart bookmarks creation.
   let itemId = bs.getIdForItemAt(bs.toolbarFolder, SMART_BOOKMARKS_ON_TOOLBAR);
   do_check_eq(bs.getItemTitle(itemId), "examplejson");
 
--- a/suite/common/places/tests/unit/test_browserGlue_corrupt_nobackup.js
+++ b/suite/common/places/tests/unit/test_browserGlue_corrupt_nobackup.js
@@ -62,17 +62,17 @@ function run_test() {
   let hs = Cc["@mozilla.org/browser/nav-history-service;1"].
            getService(Ci.nsINavHistoryService);
   // Check the database was corrupt.
   // nsSuiteGlue uses databaseStatus to manage initialization.
   do_check_eq(hs.databaseStatus, hs.DATABASE_STATUS_CORRUPT);
 
   // The test will continue once import has finished and smart bookmarks
   // have been created.
-  bs.addObserver(bookmarksObserver, false);
+  bs.addObserver(bookmarksObserver);
 }
 
 function continue_test() {
   // Check that bookmarks html has been restored.
   let itemId = bs.getIdForItemAt(bs.toolbarFolder, SMART_BOOKMARKS_ON_TOOLBAR);
   do_check_eq(bs.getItemTitle(itemId), "example");
 
   remove_bookmarks_html();
--- a/suite/common/places/tests/unit/test_browserGlue_corrupt_nobackup_default.js
+++ b/suite/common/places/tests/unit/test_browserGlue_corrupt_nobackup_default.js
@@ -62,17 +62,17 @@ function run_test() {
   let hs = Cc["@mozilla.org/browser/nav-history-service;1"].
            getService(Ci.nsINavHistoryService);
   // Check the database was corrupt.
   // nsSuiteGlue uses databaseStatus to manage initialization.
   do_check_eq(hs.databaseStatus, hs.DATABASE_STATUS_CORRUPT);
 
   // The test will continue once import has finished and smart bookmarks
   // have been created.
-  bs.addObserver(bookmarksObserver, false);
+  bs.addObserver(bookmarksObserver);
 }
 
 function continue_test() {
   // Check that default bookmarks have been restored.
   let itemId = bs.getIdForItemAt(bs.toolbarFolder, SMART_BOOKMARKS_ON_TOOLBAR);
   do_check_true(itemId > 0);
   do_check_eq(bs.getItemTitle(itemId), "SeaMonkey");
 
--- a/suite/common/places/tests/unit/test_browserGlue_migrate.js
+++ b/suite/common/places/tests/unit/test_browserGlue_migrate.js
@@ -66,17 +66,17 @@ function run_test() {
 
   // Initialize nsSuiteGlue.
   let bg = Cc["@mozilla.org/suite/suiteglue;1"].
            getService(Ci.nsIObserver);
   bg.observe(null, "initial-migration", null)
 
   // The test will continue once import has finished and smart bookmarks
   // have been created.
-  bs.addObserver(bookmarksObserver, false);
+  bs.addObserver(bookmarksObserver);
 }
 
 function continue_test() {
   // Check the created bookmarks still exist.
   let itemId = bs.getIdForItemAt(bs.bookmarksMenuFolder, SMART_BOOKMARKS_ON_MENU);
   do_check_eq(bs.getItemTitle(itemId), "migrated");
 
   // Check that we have not imported any new bookmark.
--- a/suite/common/places/tests/unit/test_browserGlue_prefs.js
+++ b/suite/common/places/tests/unit/test_browserGlue_prefs.js
@@ -32,17 +32,17 @@ const PREF_AUTO_EXPORT_HTML = "browser.b
 
 function waitForImportAndSmartBookmarks(aCallback) {
   Services.obs.addObserver(function waitImport() {
     Services.obs.removeObserver(waitImport, "bookmarks-restore-success");
     // Delay to test eventual smart bookmarks creation.
     do_execute_soon(function () {
       promiseAsyncUpdates().then(aCallback);
     });
-  }, "bookmarks-restore-success", false);
+  }, "bookmarks-restore-success");
 }
 
 var tests = [];
 //------------------------------------------------------------------------------
 
 tests.push({
   description: "Import from bookmarks.html if importBookmarksHTML is true.",
   exec: function() {
@@ -230,19 +230,19 @@ function finish_test() {
 }
 var testIndex = 0;
 function next_test() {
   // Clean up database from all bookmarks.
   remove_all_bookmarks();
   // nsSuiteGlue stops observing topics after first notification,
   // so we add back the observer to test additional runs.
   os.addObserver(bg.QueryInterface(Ci.nsIObserver),
-                 PlacesUtils.TOPIC_INIT_COMPLETE, false);
+                 PlacesUtils.TOPIC_INIT_COMPLETE);
   os.addObserver(bg.QueryInterface(Ci.nsIObserver),
-                 PlacesUtils.TOPIC_DATABASE_LOCKED, false);
+                 PlacesUtils.TOPIC_DATABASE_LOCKED);
   // Execute next test.
   let test = tests.shift();
   print("\nTEST " + (++testIndex) + ": " + test.description);
   test.exec();
 }
 function run_test() {
   // Bug 539067: disabled due to random failures and timeouts.
   return;
--- a/suite/common/places/tests/unit/test_browserGlue_restore.js
+++ b/suite/common/places/tests/unit/test_browserGlue_restore.js
@@ -60,17 +60,17 @@ function run_test() {
   let hs = Cc["@mozilla.org/browser/nav-history-service;1"].
            getService(Ci.nsINavHistoryService);
   // Check a new database has been created.
   // nsSuiteGlue uses databaseStatus to manage initialization.
   do_check_eq(hs.databaseStatus, hs.DATABASE_STATUS_CREATE);
 
   // The test will continue once restore has finished and smart bookmarks
   // have been created.
-  bs.addObserver(bookmarksObserver, false);
+  bs.addObserver(bookmarksObserver);
 }
 
 function continue_test() {
   // Check that JSON backup has been restored.
   // Notice restore from JSON notification is fired before smart bookmarks creation.
   let itemId = bs.getIdForItemAt(bs.toolbarFolder, SMART_BOOKMARKS_ON_TOOLBAR);
   do_check_eq(bs.getItemTitle(itemId), "examplejson");
 
--- a/suite/common/places/tests/unit/test_browserGlue_smartBookmarks.js
+++ b/suite/common/places/tests/unit/test_browserGlue_smartBookmarks.js
@@ -342,10 +342,10 @@ function run_test() {
 
 function waitForImportAndSmartBookmarks(aCallback) {
   Services.obs.addObserver(function waitImport() {
     Services.obs.removeObserver(waitImport, "bookmarks-restore-success");
     // Delay to test eventual smart bookmarks creation.
     do_execute_soon(function () {
       promiseAsyncUpdates().then(aCallback);
     });
-  }, "bookmarks-restore-success", false);
+  }, "bookmarks-restore-success");
 }
--- a/suite/common/places/tests/unit/test_clearHistory_shutdown.js
+++ b/suite/common/places/tests/unit/test_clearHistory_shutdown.js
@@ -108,17 +108,17 @@ add_task(async function test_execute() {
   storeCache(URL, "testData");
 });
 
 function run_test_continue()
 {
   print("Simulate and wait shutdown.");
   getDistinctNotifications().forEach(
     topic =>
-      Services.obs.addObserver(notificationsObserver, topic, false)
+      Services.obs.addObserver(notificationsObserver, topic)
   );
 
   // Simulate an exit so that Sanitizer's init method checkSettings() is called.
   print("Simulate 'quit-application-granted' too for SeaMonkey.");
   Services.obs.notifyObservers(null, "quit-application-granted", null);
 
   shutdownPlaces();
 
--- a/suite/common/places/tree.xml
+++ b/suite/common/places/tree.xml
@@ -97,17 +97,17 @@
             this.controllers.appendController(this._controller);
           }
 
           let treeView = new PlacesTreeView(this.flatList, callback, this._controller);
 
           // Observer removal is done within the view itself.  When the tree
           // goes away, treeboxobject calls view.setTree(null), which then
           // calls removeObserver.
-          result.addObserver(treeView, false);
+          result.addObserver(treeView);
           this.view = treeView;
           this._cachedInsertionPoint = undefined;
         ]]></body>
       </method>
 
       <property name="flatList">
         <getter><![CDATA[
           return this.getAttribute("flatList") == "true";
--- a/suite/common/pref/pref-applications.js
+++ b/suite/common/pref/pref-applications.js
@@ -821,29 +821,29 @@ var gApplicationsPane = {
     this._brandShortName =
       document.getElementById("bundleBrand").getString("brandShortName");
     this._prefsBundle = document.getElementById("bundlePrefApplications");
     this._list = document.getElementById("handlersView");
     this._filter = document.getElementById("filter");
 
     // Observe preferences that influence what we display so we can rebuild
     // the view when they change.
-    Services.prefs.addObserver(PREF_SHOW_PLUGINS_IN_LIST, this, false);
-    Services.prefs.addObserver(PREF_HIDE_PLUGINS_WITHOUT_EXTENSIONS, this, false);
-    Services.prefs.addObserver(PREF_FEED_SELECTED_APP, this, false);
-    Services.prefs.addObserver(PREF_FEED_SELECTED_WEB, this, false);
-    Services.prefs.addObserver(PREF_FEED_SELECTED_ACTION, this, false);
+    Services.prefs.addObserver(PREF_SHOW_PLUGINS_IN_LIST, this);
+    Services.prefs.addObserver(PREF_HIDE_PLUGINS_WITHOUT_EXTENSIONS, this);
+    Services.prefs.addObserver(PREF_FEED_SELECTED_APP, this);
+    Services.prefs.addObserver(PREF_FEED_SELECTED_WEB, this);
+    Services.prefs.addObserver(PREF_FEED_SELECTED_ACTION, this);
 
-    Services.prefs.addObserver(PREF_VIDEO_FEED_SELECTED_APP, this, false);
-    Services.prefs.addObserver(PREF_VIDEO_FEED_SELECTED_WEB, this, false);
-    Services.prefs.addObserver(PREF_VIDEO_FEED_SELECTED_ACTION, this, false);
+    Services.prefs.addObserver(PREF_VIDEO_FEED_SELECTED_APP, this);
+    Services.prefs.addObserver(PREF_VIDEO_FEED_SELECTED_WEB, this);
+    Services.prefs.addObserver(PREF_VIDEO_FEED_SELECTED_ACTION, this);
 
-    Services.prefs.addObserver(PREF_AUDIO_FEED_SELECTED_APP, this, false);
-    Services.prefs.addObserver(PREF_AUDIO_FEED_SELECTED_WEB, this, false);
-    Services.prefs.addObserver(PREF_AUDIO_FEED_SELECTED_ACTION, this, false);
+    Services.prefs.addObserver(PREF_AUDIO_FEED_SELECTED_APP, this);
+    Services.prefs.addObserver(PREF_AUDIO_FEED_SELECTED_WEB, this);
+    Services.prefs.addObserver(PREF_AUDIO_FEED_SELECTED_ACTION, this);
 
     // Listen for window unload so we can remove our preference observers.
     window.addEventListener("unload", this);
 
     // Listen for user events on the listbox and its children
     this._list.addEventListener("select", this);
     this._list.addEventListener("command", this);
 
--- a/suite/common/pref/pref-offlineapps.js
+++ b/suite/common/pref/pref-offlineapps.js
@@ -12,17 +12,17 @@ function Startup()
   let always = document.getElementById("offline-apps.allow_by_default").value;
   UpdateNotifyBox(always);
 }
 
 var OfflineAppsObserver = {
 
   init: function offlineAppsInit() {
     this.update();
-    Services.obs.addObserver(this, "perm-changed", false);
+    Services.obs.addObserver(this, "perm-changed");
     window.addEventListener("unload", this);
   },
 
   update: function offlineAppsUpdate() {
     UpdateActualCacheSize();
     UpdateOfflineApps();
   },
 
--- a/suite/common/pref/pref-search.js
+++ b/suite/common/pref/pref-search.js
@@ -6,17 +6,17 @@ Components.utils.import("resource://gre/
 
 function Startup() {
   MakeList();
   SearchObserver.init();
 }
 
 var SearchObserver = {
   init: function searchEngineListObserver_init() {
-    Services.obs.addObserver(this, "browser-search-engine-modified", false);
+    Services.obs.addObserver(this, "browser-search-engine-modified");
     window.addEventListener("unload", this);
   },
 
   observe: function searchEngineListObj_observe(aEngine, aTopic, aVerb) {
     if (aTopic != "browser-search-engine-modified")
       return;
     MakeList();
   },
--- a/suite/common/pref/pref-sync.js
+++ b/suite/common/pref/pref-sync.js
@@ -32,17 +32,17 @@ var gSyncPane = {
             "weave:service:login:error",
             "weave:service:login:finish",
             "weave:service:start-over",
             "weave:service:setup-complete",
             "weave:service:logout:finish"],
 
   init: function () {
     for (var topic of this.topics)
-      Services.obs.addObserver(this, topic, false);
+      Services.obs.addObserver(this, topic);
 
     window.addEventListener("unload", this);
 
     var xps = Components.classes["@mozilla.org/weave/service;1"]
                         .getService().wrappedJSObject;
     if (xps.ready)
       this.observe(null, "weave:service:ready", null);
     else
--- a/suite/common/search/engineManager.js
+++ b/suite/common/search/engineManager.js
@@ -22,17 +22,17 @@ var gEngineManagerDialog = {
     gEngineView = new EngineView(new EngineStore());
 
     var suggestEnabled = Services.prefs.getBoolPref(BROWSER_SUGGEST_PREF);
     document.getElementById("enableSuggest").checked = suggestEnabled;
 
     var tree = document.getElementById("engineList");
     tree.view = gEngineView;
 
-    Services.obs.addObserver(this, "browser-search-engine-modified", false);
+    Services.obs.addObserver(this, "browser-search-engine-modified");
   },
 
   destroy: function engineManager_destroy() {
     // Remove the observer
     Services.obs.removeObserver(this, "browser-search-engine-modified");
   },
 
   observe: function engineManager_observe(aEngine, aTopic, aVerb) {
--- a/suite/common/search/search.xml
+++ b/suite/common/search/search.xml
@@ -76,17 +76,17 @@
           return;
 
         if (this.usePrivateBrowsing)
           this._textbox.searchParam += "|private";
 
         this.searchService.init(this);
         var os = Components.classes["@mozilla.org/observer-service;1"]
                            .getService(Components.interfaces.nsIObserverService);
-        os.addObserver(this, "browser-search-engine-modified", false);
+        os.addObserver(this, "browser-search-engine-modified");
         this._addedObserver = true;
       ]]></constructor>
 
       <destructor><![CDATA[
         if (this._addedObserver) {
           var os = Components.classes["@mozilla.org/observer-service;1"]
                              .getService(Components.interfaces.nsIObserverService);
           os.removeObserver(this, "browser-search-engine-modified");
@@ -525,17 +525,17 @@
 
         if (this._prefBranch.getBoolPref("browser.urlbar.clickSelectsAll"))
           this.setAttribute("clickSelectsAll", true);
 
         // Add items to context menu and attach controller to handle them
         this.controllers.appendController(this.searchbarController);
 
         // Add observer for suggest preference
-        this._prefBranch.addObserver("browser.search.suggest.enabled", this, false);
+        this._prefBranch.addObserver("browser.search.suggest.enabled", this);
 
         this._inputBox.setAttribute("suggestchecked", this._suggestEnabled);
 
         Components.utils.import("resource://gre/modules/FormHistory.jsm", this);
       ]]></constructor>
 
       <destructor><![CDATA[
           this._prefBranch.removeObserver("browser.search.suggest.enabled", this);
--- a/suite/common/sync/aboutSyncTabs.js
+++ b/suite/common/sync/aboutSyncTabs.js
@@ -8,18 +8,18 @@ Cu.import("resource://services-sync/main
 Cu.import("resource:///modules/PlacesUIUtils.jsm");
 Cu.import("resource://gre/modules/PlacesUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 
 var RemoteTabViewer = {
   _tabsList: null,
 
   init: function () {
-    Services.obs.addObserver(this, "weave:service:login:finish", false);
-    Services.obs.addObserver(this, "weave:engine:sync:finish", false);
+    Services.obs.addObserver(this, "weave:service:login:finish");
+    Services.obs.addObserver(this, "weave:engine:sync:finish");
 
     this._tabsList = document.getElementById("tabsList");
 
     this.buildList(true);
   },
 
   uninit: function () {
     Services.obs.removeObserver(this, "weave:service:login:finish");
--- a/suite/common/tests/browser/browser_354894.js
+++ b/suite/common/tests/browser/browser_354894.js
@@ -145,17 +145,17 @@ function test() {
   }
 
   /**
    * Helper: Sets up this testsuite
    */
   function setupTestsuite(testFn) {
     // Register our observers
     for (let o in observing)
-      Services.obs.addObserver(observer, o, false);
+      Services.obs.addObserver(observer, o);
 
     // Make the main test window not count as a browser window any longer
     oldWinType = document.documentElement.getAttribute("windowtype");
     document.documentElement.setAttribute("windowtype", "navigator:testrunner");
   }
 
   /**
    * Helper: Cleans up behind the testsuite
--- a/suite/common/tests/browser/browser_448741.js
+++ b/suite/common/tests/browser/browser_448741.js
@@ -49,14 +49,14 @@ function test() {
     getBrowser().removeTab(tab);
     Services.obs.removeObserver(checkingObserver, aTopic, false);
     if (Services.prefs.prefHasUserValue("browser.sessionstore.interval"))
       Services.prefs.clearUserPref("browser.sessionstore.interval");
     finish();
   }
 
   // last added observers are invoked first
-  Services.obs.addObserver(checkingObserver, "sessionstore-state-write", false);
-  Services.obs.addObserver(cleaningObserver, "sessionstore-state-write", false);
+  Services.obs.addObserver(checkingObserver, "sessionstore-state-write");
+  Services.obs.addObserver(cleaningObserver, "sessionstore-state-write");
 
   // trigger an immediate save operation
   Services.prefs.setIntPref("browser.sessionstore.interval", 0);
 }
--- a/suite/common/tests/browser/browser_526613.js
+++ b/suite/common/tests/browser/browser_526613.js
@@ -59,13 +59,13 @@ function test() {
     }
     else {
       browserWindowsCount(1);
       ok(!window.closed, "Restoring the old state should have left this window open");
       Services.obs.removeObserver(observer, "sessionstore-browser-state-restored");
       finish();
     }
   }
-  Services.obs.addObserver(observer, "sessionstore-browser-state-restored", false);
+  Services.obs.addObserver(observer, "sessionstore-browser-state-restored");
 
   // set browser to test state
   ss.setBrowserState(JSON.stringify(testState));
 }
--- a/suite/common/tests/browser/browser_637020.js
+++ b/suite/common/tests/browser/browser_637020.js
@@ -35,17 +35,17 @@ function test() {
 async function runTests() {
   let win;
 
   // Wait until the new window has been opened.
   Services.obs.addObserver(function onOpened(subject) {
     Services.obs.removeObserver(onOpened, "domwindowopened");
     win = subject;
     executeSoon(next);
-  }, "domwindowopened", false);
+  }, "domwindowopened");
 
   // Set the new browser state that will
   // restore a window with two slowly loading tabs.
   await SessionStore.setBrowserState(JSON.stringify(TEST_STATE));
 
   // The window has now been opened. Check the state that is returned,
   // this should come from the cache while the window isn't restored, yet.
   info("the window has been opened");
--- a/suite/common/tests/browser/browser_markPageAsFollowedLink.js
+++ b/suite/common/tests/browser/browser_markPageAsFollowedLink.js
@@ -30,17 +30,17 @@ var observer = {
     else if (url == RIGHT_URL ) {
       is(getTransitionForUrl(url), PlacesUtils.history.TRANSITION_FRAMED_LINK,
          "User activated visits should get a FRAMED_LINK transition.");
       finish();
     }
   },
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver])
 };
-Services.obs.addObserver(observer, "uri-visit-saved", false);
+Services.obs.addObserver(observer, "uri-visit-saved");
 
 function test()
 {
   waitForExplicitFinish();
   gBrowser.selectedTab = gBrowser.addTab(PAGE_URL);
   let frameCount = 0;
   gBrowser.selectedTab.linkedBrowser.addEventListener("DOMContentLoaded",
     function gBrowserDOMContentLoaded(event)
--- a/suite/common/tests/browser/head.js
+++ b/suite/common/tests/browser/head.js
@@ -128,17 +128,17 @@ function waitForSaveState(aSaveStateCall
   registerCleanupFunction(function() {
     removeObserver();
     if (timeout) {
       clearTimeout(timeout);
     }
   });
 
   observing = true;
-  Services.obs.addObserver(observer, topic, false);
+  Services.obs.addObserver(observer, topic);
 };
 
 function whenWindowLoaded(aWindow, aCallback) {
   aWindow.addEventListener("load", function windowLoadListener() {
     aWindow.removeEventListener("load", windowLoadListener);
     executeSoon(function executeWhenWindowLoaded() {
       aCallback(aWindow);
     });
--- a/suite/common/tests/preferences/browser_bug410900.js
+++ b/suite/common/tests/preferences/browser_bug410900.js
@@ -21,17 +21,17 @@ function test() {
 
   function observer(win, topic, data) {
     if (topic != "app-handler-pane-loaded")
       return;
 
     obs.removeObserver(observer, "app-handler-pane-loaded");
     runTest(win);
   }
-  obs.addObserver(observer, "app-handler-pane-loaded", false);
+  obs.addObserver(observer, "app-handler-pane-loaded");
 
   openDialog("chrome://communicator/content/pref/preferences.xul",
              "PrefWindow", "chrome,titlebar,dialog=no,resizable",
              "applications_pane");
 }
 
 function runTest(win) {
   var sel = win.document.documentElement.getAttribute("lastSelected");
--- a/suite/common/utilityOverlay.js
+++ b/suite/common/utilityOverlay.js
@@ -882,19 +882,19 @@ var proxyTypeObserver = {
 
 function utilityOnLoad(aEvent)
 {
   gUtilityBundle = document.getElementById("bundle_utilityOverlay");
 
   var broadcaster = document.getElementById("Communicator:WorkMode");
   if (!broadcaster) return;
 
-  Services.obs.addObserver(offlineObserver, "network:offline-status-changed", false);
+  Services.obs.addObserver(offlineObserver, "network:offline-status-changed");
   // make sure we remove this observer later
-  Services.prefs.addObserver("network.proxy.type", proxyTypeObserver, false);
+  Services.prefs.addObserver("network.proxy.type", proxyTypeObserver);
 
   addEventListener("unload", utilityOnUnload, false);
 
   // set the initial state
   setOfflineUI(Services.io.offline);
 
   // Check for system proxy settings class and show menuitem if present
   if ("@mozilla.org/system-proxy-settings;1" in Components.classes &&
--- a/suite/feeds/src/FeedWriter.js
+++ b/suite/feeds/src/FeedWriter.js
@@ -1014,29 +1014,29 @@ FeedWriter.prototype = {
 
     this._feedPrincipal = Services.scriptSecurityManager
                                   .createCodebasePrincipal(this._feedURI, {});
 
     LOG("Subscribe Preview: feed uri = " + this._window.location.href);
 
     // Set up the subscription UI
     this._initSubscriptionUI();
-    Services.prefs.addObserver(PREF_SELECTED_ACTION, this, false);
-    Services.prefs.addObserver(PREF_SELECTED_READER, this, false);
-    Services.prefs.addObserver(PREF_SELECTED_WEB, this, false);
-    Services.prefs.addObserver(PREF_SELECTED_APP, this, false);
-    Services.prefs.addObserver(PREF_VIDEO_SELECTED_ACTION, this, false);
-    Services.prefs.addObserver(PREF_VIDEO_SELECTED_READER, this, false);
-    Services.prefs.addObserver(PREF_VIDEO_SELECTED_WEB, this, false);
-    Services.prefs.addObserver(PREF_VIDEO_SELECTED_APP, this, false);
+    Services.prefs.addObserver(PREF_SELECTED_ACTION, this);
+    Services.prefs.addObserver(PREF_SELECTED_READER, this);
+    Services.prefs.addObserver(PREF_SELECTED_WEB, this);
+    Services.prefs.addObserver(PREF_SELECTED_APP, this);
+    Services.prefs.addObserver(PREF_VIDEO_SELECTED_ACTION, this);
+    Services.prefs.addObserver(PREF_VIDEO_SELECTED_READER, this);
+    Services.prefs.addObserver(PREF_VIDEO_SELECTED_WEB, this);
+    Services.prefs.addObserver(PREF_VIDEO_SELECTED_APP, this);
 
-    Services.prefs.addObserver(PREF_AUDIO_SELECTED_ACTION, this, false);
-    Services.prefs.addObserver(PREF_AUDIO_SELECTED_READER, this, false);
-    Services.prefs.addObserver(PREF_AUDIO_SELECTED_WEB, this, false);
-    Services.prefs.addObserver(PREF_AUDIO_SELECTED_APP, this, false);
+    Services.prefs.addObserver(PREF_AUDIO_SELECTED_ACTION, this);
+    Services.prefs.addObserver(PREF_AUDIO_SELECTED_READER, this);
+    Services.prefs.addObserver(PREF_AUDIO_SELECTED_WEB, this);
+    Services.prefs.addObserver(PREF_AUDIO_SELECTED_APP, this);
 
     this._window.addEventListener("load", this);
     this._window.addEventListener("unload", this);
   },
 
   _writeContent: function writeContent() {
     if (!this._window)
       return;
--- a/suite/feeds/src/WebContentConverter.js
+++ b/suite/feeds/src/WebContentConverter.js
@@ -771,17 +771,17 @@ WebContentConverterRegistrar.prototype =
   },
 
   /**
    * See nsIObserver
    */
   observe: function observe(subject, topic, data) {
     switch (topic) {
     case "app-startup":
-      Services.obs.addObserver(this, "final-ui-startup", false);
+      Services.obs.addObserver(this, "final-ui-startup");
       break;
     case "final-ui-startup":
       Services.obs.removeObserver(this, "final-ui-startup");
       this._init();
       break;
     }
   },
 
--- a/suite/mailnews/commandglue.js
+++ b/suite/mailnews/commandglue.js
@@ -860,17 +860,17 @@ var mailOfflineObserver = {
     // sanity checks
     if (topic != "network:offline-status-changed") return;
     MailOfflineStateChanged(state == "offline");
   }
 }
 
 function AddMailOfflineObserver()
 {
-  Services.obs.addObserver(mailOfflineObserver, "network:offline-status-changed", false);
+  Services.obs.addObserver(mailOfflineObserver, "network:offline-status-changed");
 }
 
 function RemoveMailOfflineObserver()
 {
   Services.obs.removeObserver(mailOfflineObserver, "network:offline-status-changed");
 }
 
 function getSearchTermString(searchTerms)
--- a/suite/mailnews/compose/MsgComposeCommands.js
+++ b/suite/mailnews/compose/MsgComposeCommands.js
@@ -756,19 +756,19 @@ var messageComposeOfflineQuitObserver = 
              !aSubject.data)
       aSubject.data = !ComposeCanClose();
   }
 }
 
 function AddMessageComposeOfflineQuitObserver()
 {
   Services.obs.addObserver(messageComposeOfflineQuitObserver,
-                           "network:offline-status-changed", false);
+                           "network:offline-status-changed");
   Services.obs.addObserver(messageComposeOfflineQuitObserver,
-                           "quit-application-requested", false);
+                           "quit-application-requested");
 
   // set the initial state of the send button
   MessageComposeOfflineStateChanged(Services.io.offline);
 }
 
 function RemoveMessageComposeOfflineQuitObserver()
 {
   Services.obs.removeObserver(messageComposeOfflineQuitObserver,
@@ -2035,17 +2035,17 @@ function addRecipientsToIgnoreList(aAddr
     {
       // spellchecker is enabled, but we must wait for its init to complete
       Services.obs.addObserver(function observe(subject, topic, data) {
         if (subject == gMsgCompose.editor)
         {
           Services.obs.removeObserver(observe, topic);
           InlineSpellCheckerUI.mInlineSpellChecker.ignoreWords(tokenizedNames, tokenizedNames.length);
         }
-      }, "inlineSpellChecker-spellCheck-ended", false);
+      }, "inlineSpellChecker-spellCheck-ended");
     }
     else
     {
       InlineSpellCheckerUI.mInlineSpellChecker.ignoreWords(tokenizedNames, tokenizedNames.length);
     }
   }
 }
 
--- a/suite/mailnews/mailTasksOverlay.js
+++ b/suite/mailnews/mailTasksOverlay.js
@@ -163,17 +163,17 @@ function MailTasksOnLoad(aEvent)
   // Without the mini-mail icon to show the biff state, there's no need to
   // initialize this here. We won't start with the hidden window alone,
   // so this early return doesn't break anything.
   var miniMail = document.getElementById("mini-mail");
   if (!miniMail)
     return;
 
   // initialize biff state
-  Services.obs.addObserver(biffObserver, BIFF_TOPIC, false);
+  Services.obs.addObserver(biffObserver, BIFF_TOPIC);
   biffObserver.observe(null, BIFF_TOPIC, null); // init mini-mail icon
   addEventListener("unload", MailTasksOnUnload, false);
 
   // don't try to biff if offline, but do so silently
   if (Services.io.offline)
     return;
 
   // Performing biff here will mean performing it for all new windows opened!
--- a/suite/mailnews/msgHdrViewOverlay.js
+++ b/suite/mailnews/msgHdrViewOverlay.js
@@ -230,17 +230,17 @@ function OnLoadMsgHeaderPane()
   gCollectOutgoing = Services.prefs.getBoolPref("mail.collect_email_address_outgoing");
   gShowCondensedEmailAddresses = Services.prefs.getBoolPref("mail.showCondensedAddresses");
   gShowUserAgent = Services.prefs.getBoolPref("mailnews.headers.showUserAgent");
   gShowOrganization = Services.prefs.getBoolPref("mailnews.headers.showOrganization");
   gShowReferences = Services.prefs.getBoolPref("mailnews.headers.showReferences");
   gShowMessageId = Services.prefs.getBoolPref("mailnews.headers.showMessageId");
   gExtraExpandedHeaders = Services.prefs.getCharPref("mailnews.headers.extraExpandedHeaders");
 
-  Services.prefs.addObserver("mail.showCondensedAddresses", MsgHdrViewObserver, false);
+  Services.prefs.addObserver("mail.showCondensedAddresses", MsgHdrViewObserver);
 
   initializeHeaderViewTables();
 
   // Add an address book listener so we can update the header view when things
   // change.
   Components.classes["@mozilla.org/abmanager;1"]
             .getService(Components.interfaces.nsIAbManager)
             .addAddressBookListener(AddressBookListener, nsIAbListener.all);
--- a/suite/mailnews/msgMail3PaneWindow.js
+++ b/suite/mailnews/msgMail3PaneWindow.js
@@ -662,18 +662,18 @@ const MailPrefObserver = {
   }
 };
 
 /* Functions related to startup */
 function OnLoadMessenger()
 {
   AddMailOfflineObserver();
   CreateMailWindowGlobals();
-  Services.prefs.addObserver("mail.pane_config.dynamic", MailPrefObserver, false);
-  Services.prefs.addObserver("mail.showCondensedAddresses", MailPrefObserver, false);
+  Services.prefs.addObserver("mail.pane_config.dynamic", MailPrefObserver);
+  Services.prefs.addObserver("mail.showCondensedAddresses", MailPrefObserver);
   UpdateMailPaneConfig();
   Create3PaneGlobals();
   verifyAccounts(null, false);
   msgDBCacheManager.init();
 
   // set the messenger default window size relative to the screen size
   // initial default dimensions are 2/3 and 1/2 of the screen dimensions
   if (!document.documentElement.hasAttribute("width")) {
@@ -696,17 +696,17 @@ function OnLoadMessenger()
     document.documentElement.setAttribute("width",  defaultWidth  - 24);
   }
 
   // initialize tabmail system - see tabmail.js and tabmail.xml for details
   let tabmail = GetTabMail();
   tabmail.registerTabType(gMailNewsTabsType);
   tabmail.openFirstTab();
   Services.obs.addObserver(MailWindowIsClosing,
-                           "quit-application-requested", false);
+                           "quit-application-requested");
 
   InitMsgWindow();
   messenger.setWindow(window, msgWindow);
 
   InitializeDataSources();
   InitPanes();
 
   MigrateJunkMailSettings();
--- a/suite/mailnews/search/FilterListDialog.js
+++ b/suite/mailnews/search/FilterListDialog.js
@@ -163,17 +163,17 @@ function onLoad()
       selectFolder(firstItem);
     else
       updateButtons();
 
     // Focus the list.
     gFilterTree.focus();
 
     Services.obs.addObserver(onFilterClose,
-                             "quit-application-requested", false);
+                             "quit-application-requested");
 
     top.controllers.insertControllerAt(0, gFilterController);
 }
 
 /**
  * Called when a user selects a folder in the list, so we can update the
  * filters that are displayed
  *
--- a/suite/mailnews/tabmail.xml
+++ b/suite/mailnews/tabmail.xml
@@ -210,17 +210,17 @@
     </content>
 
     <implementation implements="nsIController, nsIObserver">
       <constructor>
         <![CDATA[
           window.controllers.insertControllerAt(0, this);
           const kAutoHide = "browser.tabs.autoHide";
           this.mAutoHide = this.mPrefs.getBoolPref(kAutoHide);
-          this.mPrefs.addObserver(kAutoHide, this, false);
+          this.mPrefs.addObserver(kAutoHide, this);
         ]]>
       </constructor>
 
       <destructor>
         <![CDATA[
           this.mPrefs.removeObserver("browser.tabs.autoHide", this);
           window.controllers.removeController(this);
         ]]>
@@ -1047,17 +1047,17 @@
         <![CDATA[
           this.mTabMinWidth  = this.mPrefs.getIntPref ("browser.tabs.tabMinWidth");
           this.mTabMaxWidth  = this.mPrefs.getIntPref ("browser.tabs.tabMaxWidth");
           this.mTabClipWidth = this.mPrefs.getIntPref ("browser.tabs.tabClipWidth");
           this.mCloseButtons = this.mPrefs.getIntPref ("browser.tabs.closeButtons");
           this.firstChild.minWidth = this.mTabMinWidth;
           this.firstChild.maxWidth = this.mTabMaxWidth;
           this.adjustTabstrip();
-          this.mPrefs.addObserver("browser.tabs.", this, false);
+          this.mPrefs.addObserver("browser.tabs.", this);
           window.addEventListener("resize", this);
 
           // Listen to overflow/underflow events on the tabstrip,
           // we cannot put these as xbl handlers on the entire binding because
           // they would also get called for the all-tabs popup scrollbox.
           // Also, we can't rely on event.target because these are all
           // anonymous nodes.
           this.mTabstrip.addEventListener("overflow",  this);
--- a/suite/modules/DownloadTaskbarProgress.jsm
+++ b/suite/modules/DownloadTaskbarProgress.jsm
@@ -126,17 +126,17 @@ var DownloadTaskbarProgressUpdater =
       DownloadTaskbarProgressUpdater = null;
       return;
     }
 
     this._taskbarState = Ci.nsITaskbarProgress.STATE_NO_PROGRESS;
 
     this._os = Cc["@mozilla.org/observer-service;1"].
                getService(Ci.nsIObserverService);
-    this._os.addObserver(this, "quit-application-granted", false);
+    this._os.addObserver(this, "quit-application-granted");
 
     this._updateStatus();
     // onBrowserWindowLoad/onDownloadWindowLoad are going to set the active
     // window, so don't do it here.
   },
 
   /**
    * Unregisters ourselves as a download progress listener.
--- a/suite/profile/migration.js
+++ b/suite/profile/migration.js
@@ -19,21 +19,21 @@ var MigrationWizard = {
   _autoMigrate: null,           // Whether or not we are actually migrating.
   _singleItem: false,           // Are we choosing just to import a single
                                 // item into the current profile?
   _newHomePage: null,           // Are we setting a new home page - what to?
 
   init: function() {
     var os = Components.classes["@mozilla.org/observer-service;1"]
                        .getService(Components.interfaces.nsIObserverService);
-    os.addObserver(this, "Migration:Started", false);
-    os.addObserver(this, "Migration:ItemBeforeMigrate", false);
-    os.addObserver(this, "Migration:ItemAfterMigrate", false);
-    os.addObserver(this, "Migration:Ended", false);
-    os.addObserver(this, "Migration:Progress", false);
+    os.addObserver(this, "Migration:Started");
+    os.addObserver(this, "Migration:ItemBeforeMigrate");
+    os.addObserver(this, "Migration:ItemAfterMigrate");
+    os.addObserver(this, "Migration:Ended");
+    os.addObserver(this, "Migration:Progress");
 
     this._wiz = document.documentElement;
     this._wiz.canRewind = false;
 
     if ("arguments" in window) {
       if ("arguments" in window && window.arguments[0] == "bookmarks") {
         this._singleItem = true;
         this._itemsFlags = nsISuiteProfileMigrator.BOOKMARKS;
--- a/suite/smile/test/browser_ApplicationQuitting.js
+++ b/suite/smile/test/browser_ApplicationQuitting.js
@@ -2,16 +2,16 @@ function test() {
   function quitRequestObserver(aSubject, aTopic, aData) {
     ok(aTopic == "quit-application-requested" &&
        aSubject instanceof Components.interfaces.nsISupportsPRBool,
        "Received a quit request we're going to deny");
     aSubject.data = true;
   }
 
   // ensure that we don't accidentally quit
-  Services.obs.addObserver(quitRequestObserver, "quit-application-requested", false);
+  Services.obs.addObserver(quitRequestObserver, "quit-application-requested");
 
   ok(!Application.quit(),    "Tried to quit - and didn't succeed");
   ok(!Application.restart(), "Tried to restart - and didn't succeed");
 
   // clean up
   Services.obs.removeObserver(quitRequestObserver, "quit-application-requested", false);
 }