fune/netwerk/protocol/http/UAOverridesBootstrapper.js
Shih-Chiang Chien 0131b8b831 Bug 1363421 - Part 2, delay the initialization of UserAgentOverrides.jsm until first nsHttpChannel is created. r=mcmanus
UAOverridesBootstrapper.js is introduced to delay the initialization of
UserAgentOverrides.jsm until the creation of the first nsHttpChannel.
Uninit will be triggered at profile-change-net-teardown because no network
traffice after this point.


MozReview-Commit-ID: F8Lpn6RyZEm

--HG--
extra : rebase_source : 7c3649b50ad8594dc0968961fbbd2766d0d98b0a
2017-05-16 12:11:12 +08:00

36 lines
1.1 KiB
JavaScript

/* 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";
const Ci = Components.interfaces;
const Cu = Components.utils;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/UserAgentOverrides.jsm");
function UAOverridesBootstrapper() {
this.init();
}
UAOverridesBootstrapper.prototype = {
init: function uaob_init() {
Services.obs.addObserver(this, "profile-change-net-teardown", false);
UserAgentOverrides.init();
},
observe: function uaob_observe(aSubject, aTopic, aData) {
if (aTopic == "profile-change-net-teardown") {
Services.obs.removeObserver(this, "profile-change-net-teardown");
UserAgentOverrides.uninit();
}
},
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
classID: Components.ID("{965b0ca8-155b-11e7-93ae-92361f002671}")
};
const components = [UAOverridesBootstrapper];
this.NSGetFactory = XPCOMUtils.generateNSGetFactory(components);