Improve SSUAO to provide more accurate OS information.

This commit is contained in:
Fedor 2020-05-07 14:44:36 +03:00
parent 812072e9b6
commit c03564ad50
2 changed files with 23 additions and 3 deletions

View File

@ -2,6 +2,10 @@
* 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/. */
#ifdef XP_WIN
#define UA_SPARE_PLATFORM
#endif
"use strict";
this.EXPORTED_SYMBOLS = [ "UserAgentOverrides" ];
@ -18,6 +22,14 @@ const PREF_OVERRIDES_ENABLED = "general.useragent.site_specific_overrides";
const DEFAULT_UA = Cc["@mozilla.org/network/protocol;1?name=http"]
.getService(Ci.nsIHttpProtocolHandler)
.userAgent;
const OSCPU = Cc["@mozilla.org/network/protocol;1?name=http"]
.getService(Ci.nsIHttpProtocolHandler)
.oscpu;
#ifndef UA_SPARE_PLATFORM
const PLATFORM = Cc["@mozilla.org/network/protocol;1?name=http"]
.getService(Ci.nsIHttpProtocolHandler)
.platform;
#endif
const MAX_OVERRIDE_FOR_HOST_CACHE_SIZE = 250;
XPCOMUtils.defineLazyServiceGetter(this, "ppmm",
@ -33,12 +45,20 @@ var gOverrideFunctions = [
function (aHttpChannel) { return UserAgentOverrides.getOverrideForURI(aHttpChannel.URI); }
];
var gBuiltUAs = new Map;
var gOSSlice;
this.UserAgentOverrides = {
init: function uao_init() {
if (gInitialized)
return;
gOSSlice = OSCPU + ";";
#ifndef UA_SPARE_PLATFORM
if (PLATFORM != "") {
gOSSlice = PLATFORM + "; " + gOSSlice;
}
#endif
gPrefBranch = Services.prefs.getBranch("general.useragent.override.");
gPrefBranch.addObserver("", buildOverrides, false);
@ -143,7 +163,7 @@ function getUserAgentFromOverride(override)
if (search && replace) {
userAgent = DEFAULT_UA.replace(new RegExp(search, "g"), replace);
} else {
userAgent = override;
userAgent = override.replace(/%OS_SLICE%/g, gOSSlice);
}
gBuiltUAs.set(override, userAgent);
return userAgent;

View File

@ -99,9 +99,9 @@ IPDL_SOURCES += [
'PHttpChannel.ipdl',
]
EXTRA_JS_MODULES += ['UserAgentOverrides.jsm']
EXTRA_JS_MODULES += ['UserAgentUpdates.jsm']
EXTRA_PP_JS_MODULES += ['UserAgentUpdates.jsm']
EXTRA_PP_JS_MODULES += ['UserAgentOverrides.jsm']
include('/ipc/chromium/chromium-config.mozbuild')