bug 1543676: remote: avoid Preferences.jsm before first paint; r=yulia
authorAndreas Tolfsen <ato@sny.no>
Mon, 15 Apr 2019 14:41:21 +0000
changeset 469510 45358a231fb3
parent 469509 debaeed47505
child 469511 2e9b1056dca8
push id35873
push userccoroiu@mozilla.com
push dateMon, 15 Apr 2019 21:36:26 +0000
treeherdermozilla-central@b8f49a14c458 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersyulia
bugs1543676
milestone68.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
bug 1543676: remote: avoid Preferences.jsm before first paint; r=yulia It is illegal for any code to depend on Preferences.jsm before first paint. This enforced by browser/base/content/test/performance/browser_startup.js, so we must change remote/RemoteAgent.jsm to use an alternate mechanism for getting at the preferences it needs. Differential Revision: https://phabricator.services.mozilla.com/D27246
remote/Log.jsm
--- a/remote/Log.jsm
+++ b/remote/Log.jsm
@@ -1,28 +1,31 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 var EXPORTED_SYMBOLS = ["Log"];
 
-const {Preferences} = ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 const {Log: StdLog} = ChromeUtils.import("resource://gre/modules/Log.jsm");
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const LOG_LEVEL = "remote.log.level";
 
 /** E10s compatible wrapper for the standard logger from Log.jsm. */
 class Log {
   static get() {
     const logger = StdLog.repository.getLogger("RemoteAgent");
     if (logger.ownAppenders.length == 0) {
       logger.addAppender(new StdLog.DumpAppender());
       logger.manageLevelFromPref(LOG_LEVEL);
     }
     return logger;
   }
 
   static get verbose() {
-    return StdLog.Level[Preferences.get(LOG_LEVEL)] >= StdLog.Level.Info;
+    // we can't use Preferences.jsm before first paint,
+    // see ../browser/base/content/test/performance/browser_startup.js
+    const level = Services.prefs.getStringPref(LOG_LEVEL, "Info");
+    return StdLog.Level[level] >= StdLog.Level.Info;
   }
 }