Bug 1386807 - Part 3: Make the UA pref actually disable UA overrides r=Felipe

MozReview-Commit-ID: 25YsSg7P8DP

--HG--
extra : rebase_source : 49766d75008ecb7312fb44de6165d979511c504c
This commit is contained in:
Dennis Schubert 2018-02-09 18:53:33 +01:00
parent 94025d3733
commit c4990861bf
2 changed files with 17 additions and 6 deletions

View File

@ -34,12 +34,7 @@ function InjectionsEnablePrefObserver() {
function UAEnablePrefObserver() {
let isEnabled = Services.prefs.getBoolPref(UA_ENABLE_PREF_NAME);
if (isEnabled && !overrider) {
overrider = new UAOverrider(UAOverrides);
overrider.init();
} else if (!isEnabled && overrider) {
overrider = null;
}
overrider.setShouldOverride(isEnabled);
}
function setDefaultPrefs() {

View File

@ -11,6 +11,7 @@ XPCOMUtils.defineLazyServiceGetter(this, "eTLDService", "@mozilla.org/network/ef
class UAOverrider {
constructor(overrides) {
this._overrides = {};
this._shouldOverride = true;
this.initOverrides(overrides);
}
@ -48,11 +49,26 @@ class UAOverrider {
}
}
/**
* Used for disabling overrides when the pref has been flipped to false.
*
* Since we no longer use our own event handlers, we check this bool in our
* override callback and simply return early if we are not supposed to do
* anything.
*/
setShouldOverride(newState) {
this._shouldOverride = newState;
}
init() {
UserAgentOverrides.addComplexOverride(this.overrideCallback.bind(this));
}
overrideCallback(channel, defaultUA) {
if (!this._shouldOverride) {
return false;
}
let uaOverride = this.lookupUAOverride(channel.URI, defaultUA);
if (uaOverride) {
console.log("The user agent has been overridden for compatibility reasons.");