зеркало из https://github.com/mozilla/gecko-dev.git
Bug 963592 - Perform replacements for updated UA overrides. r=fabrice
This commit is contained in:
Родитель
156bdefe5c
Коммит
12ab2e2ac9
|
@ -32,6 +32,7 @@ var gInitialized = false;
|
|||
var gOverrideFunctions = [
|
||||
function (aHttpChannel) UserAgentOverrides.getOverrideForURI(aHttpChannel.URI)
|
||||
];
|
||||
var gBuiltUAs = new Map;
|
||||
|
||||
this.UserAgentOverrides = {
|
||||
init: function uao_init() {
|
||||
|
@ -53,6 +54,9 @@ this.UserAgentOverrides = {
|
|||
UserAgentUpdates.init(function(overrides) {
|
||||
gOverrideForHostCache.clear();
|
||||
if (overrides) {
|
||||
for (let domain in overrides) {
|
||||
overrides[domain] = getUserAgentFromOverride(overrides[domain]);
|
||||
}
|
||||
overrides.get = function(key) this[key];
|
||||
}
|
||||
gUpdatedOverrides = overrides;
|
||||
|
@ -129,6 +133,22 @@ this.UserAgentOverrides = {
|
|||
}
|
||||
};
|
||||
|
||||
function getUserAgentFromOverride(override)
|
||||
{
|
||||
let userAgent = gBuiltUAs.get(override);
|
||||
if (userAgent !== undefined) {
|
||||
return userAgent;
|
||||
}
|
||||
let [search, replace] = override.split("#", 2);
|
||||
if (search && replace) {
|
||||
userAgent = DEFAULT_UA.replace(new RegExp(search, "g"), replace);
|
||||
} else {
|
||||
userAgent = override;
|
||||
}
|
||||
gBuiltUAs.set(override, userAgent);
|
||||
return userAgent;
|
||||
}
|
||||
|
||||
function buildOverrides() {
|
||||
gOverrides.clear();
|
||||
gOverrideForHostCache.clear();
|
||||
|
@ -141,17 +161,7 @@ function buildOverrides() {
|
|||
|
||||
for (let domain of domains) {
|
||||
let override = gPrefBranch.getCharPref(domain);
|
||||
let userAgent = builtUAs.get(override);
|
||||
|
||||
if (userAgent === undefined) {
|
||||
let [search, replace] = override.split("#", 2);
|
||||
if (search && replace) {
|
||||
userAgent = DEFAULT_UA.replace(new RegExp(search, "g"), replace);
|
||||
} else {
|
||||
userAgent = override;
|
||||
}
|
||||
builtUAs.set(override, userAgent);
|
||||
}
|
||||
let userAgent = getUserAgentFromOverride(override);
|
||||
|
||||
if (userAgent != DEFAULT_UA) {
|
||||
gOverrides.set(domain, userAgent);
|
||||
|
|
|
@ -30,6 +30,12 @@ const DEFAULT_UA = navigator.userAgent;
|
|||
const UA_OVERRIDE = "DummyUserAgent";
|
||||
const UA_ALT_OVERRIDE = "AltUserAgent";
|
||||
|
||||
const UA_PARTIAL_FROM = "\\wozilla"; // /\wozilla
|
||||
const UA_PARTIAL_SEP = "#";
|
||||
const UA_PARTIAL_TO = UA_OVERRIDE;
|
||||
const UA_PARTIAL_OVERRIDE = UA_PARTIAL_FROM + UA_PARTIAL_SEP + UA_PARTIAL_TO;
|
||||
const UA_PARTIAL_EXPECTED = DEFAULT_UA.replace(new RegExp(UA_PARTIAL_FROM, 'g'), UA_PARTIAL_TO);
|
||||
|
||||
function getUA(host) {
|
||||
var url = location.pathname;
|
||||
url = host + url.slice(0, url.lastIndexOf('/')) + '/user_agent.sjs';
|
||||
|
@ -78,6 +84,12 @@ const OVERRIDES = [
|
|||
expected: SpecialPowers.Services.appinfo.OS,
|
||||
host: 'http://sub1.test2.example.org'
|
||||
},
|
||||
{
|
||||
domain: 'sub2.test2.example.org',
|
||||
override: UA_PARTIAL_OVERRIDE,
|
||||
expected: UA_PARTIAL_EXPECTED,
|
||||
host: 'http://sub2.test2.example.org'
|
||||
},
|
||||
];
|
||||
|
||||
function getServerURL() {
|
||||
|
|
Загрузка…
Ссылка в новой задаче