closes #577: add back general.useragent.override.*

This commit is contained in:
Cameron Kaiser 2019-11-14 21:44:42 -08:00
parent 2eda8a4d45
commit a8f4daa76e
2 changed files with 45 additions and 14 deletions

View File

@ -52,6 +52,9 @@ XPCOMUtils.defineLazyModuleGetter(this, "ContentClick",
XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
"resource://gre/modules/NetUtil.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "UserAgentOverrides",
"resource://gre/modules/UserAgentOverrides.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
"resource://gre/modules/FileUtils.jsm");
@ -817,6 +820,8 @@ BrowserGlue.prototype = {
// handle any UI migration
this._migrateUI();
UserAgentOverrides.init();
this._syncSearchEngines();
WebappManager.init();
@ -1294,6 +1299,7 @@ BrowserGlue.prototype = {
SelfSupportBackend.uninit();
CustomizationTabPreloader.uninit();
UserAgentOverrides.uninit();
WebappManager.uninit();
if (!AppConstants.RELEASE_BUILD) {

View File

@ -29,6 +29,8 @@ var gOverrides = new Map;
var gUpdatedOverrides;
var gOverrideForHostCache = new Map;
var gInitialized = false;
var gRegisteredWithNecko = false;
var gOverrideFunctions = [
function (aHttpChannel) { return UserAgentOverrides.getOverrideForURI(aHttpChannel.URI); }
];
@ -42,15 +44,6 @@ this.UserAgentOverrides = {
gPrefBranch = Services.prefs.getBranch("general.useragent.override.");
gPrefBranch.addObserver("", buildOverrides, false);
ppmm.addMessageListener(OVERRIDE_MESSAGE, this);
Services.prefs.addObserver(PREF_OVERRIDES_ENABLED, buildOverrides, false);
try {
Services.obs.addObserver(HTTP_on_modify_request, "http-on-modify-request", false);
} catch (x) {
// The http-on-modify-request notification is disallowed in content processes.
}
UserAgentUpdates.init(function(overrides) {
gOverrideForHostCache.clear();
if (overrides) {
@ -72,10 +65,12 @@ this.UserAgentOverrides = {
},
getOverrideForURI: function uao_getOverrideForURI(aURI) {
if (!gInitialized || !gRegisteredWithNecko ||
(!gOverrides.size && !gUpdatedOverrides))
return null;
let host = aURI.asciiHost;
if (!gInitialized ||
(!gOverrides.size && !gUpdatedOverrides) ||
!(host)) {
if (!(host)) {
return null;
}
@ -118,7 +113,7 @@ this.UserAgentOverrides = {
Services.prefs.removeObserver(PREF_OVERRIDES_ENABLED, buildOverrides);
Services.obs.removeObserver(HTTP_on_modify_request, "http-on-modify-request");
unregisterWithNecko();
},
receiveMessage: function(aMessage) {
@ -133,6 +128,30 @@ this.UserAgentOverrides = {
}
};
function registerWithNecko() {
if (gRegisteredWithNecko) {
return;
}
ppmm.addMessageListener(OVERRIDE_MESSAGE, this);
Services.prefs.addObserver(PREF_OVERRIDES_ENABLED, buildOverrides, false);
try {
Services.obs.addObserver(HTTP_on_modify_request, "http-on-modify-request", false);
gRegisteredWithNecko = true;
} catch (x) {
// The http-on-modify-request notification is disallowed in content processes.
}
}
function unregisterWithNecko() {
if (gRegisteredWithNecko == false) {
return;
}
Services.obs.removeObserver(HTTP_on_modify_request, "http-on-modify-request");
gRegisteredWithNecko = false;
}
function getUserAgentFromOverride(override)
{
let userAgent = gBuiltUAs.get(override);
@ -150,6 +169,7 @@ function getUserAgentFromOverride(override)
}
function buildOverrides() {
unregisterWithNecko();
gOverrides.clear();
gOverrideForHostCache.clear();
@ -162,11 +182,16 @@ function buildOverrides() {
for (let domain of domains) {
let override = gPrefBranch.getCharPref(domain);
let userAgent = getUserAgentFromOverride(override);
if (userAgent != DEFAULT_UA) {
gOverrides.set(domain, userAgent);
}
}
// Only register with Necko if there are actually overrides.
// See https://bug896114.bmoattachments.org/attachment.cgi?id=778980
if (gOverrides.size > 0) {
registerWithNecko();
}
}
function HTTP_on_modify_request(aSubject, aTopic, aData) {