Read Firefox UA compatmode from a pref instead of hard-coded.

In case of a missing pref, a hard-coded value is still used from the ctor.
This commit is contained in:
wolfbeast 2017-08-11 13:30:55 +02:00 • committed by Roy Tam
commit 14b6e5e8f2
3 changed files with 25 additions and 7 deletions

View file

@ -23,6 +23,7 @@ pref("keyword.enabled", false);
pref("general.useragent.locale", "chrome://global/locale/intl.properties"); pref("general.useragent.locale", "chrome://global/locale/intl.properties");
pref("general.useragent.compatMode.gecko", false); pref("general.useragent.compatMode.gecko", false);
pref("general.useragent.compatMode.firefox", false); pref("general.useragent.compatMode.firefox", false);
pref("general.useragent.compatMode.version", "52.9");
pref("general.useragent.appVersionIsBuildID", true); pref("general.useragent.appVersionIsBuildID", true);
// This pref exists only for testing purposes. In order to disable all // This pref exists only for testing purposes. In order to disable all

View file

@ -103,9 +103,6 @@
#define NS_HTTP_PROTOCOL_FLAGS (URI_STD | ALLOWS_PROXY | ALLOWS_PROXY_HTTP | URI_LOADABLE_BY_ANYONE) #define NS_HTTP_PROTOCOL_FLAGS (URI_STD | ALLOWS_PROXY | ALLOWS_PROXY_HTTP | URI_LOADABLE_BY_ANYONE)
// Firefox compatibility version we claim in our UA by default
#define MOZILLA_COMPATVERSION "52.9"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
namespace mozilla { namespace mozilla {
@ -204,6 +201,7 @@ nsHttpHandler::nsHttpHandler()
, mLegacyAppVersion("5.0") , mLegacyAppVersion("5.0")
, mProduct("Gecko") , mProduct("Gecko")
, mCompatFirefoxEnabled(false) , mCompatFirefoxEnabled(false)
, mCompatFirefoxVersion("52.9")
, mUserAgentIsDirty(true) , mUserAgentIsDirty(true)
, mPromptTempRedirect(true) , mPromptTempRedirect(true)
, mEnablePersistentHttpsCaching(false) , mEnablePersistentHttpsCaching(false)
@ -320,10 +318,12 @@ nsHttpHandler::Init()
nsHttpChannelAuthProvider::InitializePrefs(); nsHttpChannelAuthProvider::InitializePrefs();
// rv: should have the Firefox/Gecko compatversion for web compatibility // rv: should have the Firefox/Gecko compatversion for web compatibility
mMisc.AssignLiteral("rv:" MOZILLA_COMPATVERSION); mMisc.AssignLiteral("rv:");
mMisc += mCompatFirefoxVersion;
mCompatGecko.AssignLiteral("Gecko/20100101"); mCompatGecko.AssignLiteral("Gecko/20100101");
mCompatFirefox.AssignLiteral("Firefox/" MOZILLA_COMPATVERSION); mCompatFirefox.AssignLiteral("Firefox/");
mCompatFirefox += mCompatFirefoxVersion;
nsCOMPtr<nsIXULAppInfo> appInfo = nsCOMPtr<nsIXULAppInfo> appInfo =
do_GetService("@mozilla.org/xre/app-info;1"); do_GetService("@mozilla.org/xre/app-info;1");
@ -352,7 +352,7 @@ nsHttpHandler::Init()
appInfo->GetVersion(mAppVersion); appInfo->GetVersion(mAppVersion);
} else { } else {
// Fall back to platform if appInfo is unavailable // Fall back to platform if appInfo is unavailable
mAppVersion.Assign(MOZILLA_UAVERSION); mAppVersion.AssignLiteral(MOZILLA_UAVERSION);
} }
// If there's no override set, set it to the dynamic BuildID // If there's no override set, set it to the dynamic BuildID
@ -1015,10 +1015,26 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
mUserAgentIsDirty = true; mUserAgentIsDirty = true;
} }
// general.useragent.compatMode.version
// This is the version number used in rv: for Gecko compatibility
// and in the Firefox/nn.nn slice when compatMode.firefox is enabled.
if (PREF_CHANGED(UA_PREF("compatMode.version"))) {
prefs->GetCharPref(UA_PREF("compatMode.version"),
getter_Copies(mCompatFirefoxVersion));
// rebuild mMisc and compatMode slice
mMisc.AssignLiteral("rv:");
mMisc += mCompatFirefoxVersion;
mCompatFirefox.AssignLiteral("Firefox/");
mCompatFirefox += mCompatFirefoxVersion;
mUserAgentIsDirty = true;
}
// general.useragent.override // general.useragent.override
if (PREF_CHANGED(UA_PREF("override"))) { if (PREF_CHANGED(UA_PREF("override"))) {
prefs->GetCharPref(UA_PREF("override"), prefs->GetCharPref(UA_PREF("override"),
getter_Copies(mUserAgentOverride)); getter_Copies(mUserAgentOverride));
mUserAgentIsDirty = true; mUserAgentIsDirty = true;
} }

View file

@ -489,6 +489,7 @@ private:
nsCString mCompatGecko; nsCString mCompatGecko;
bool mCompatGeckoEnabled; bool mCompatGeckoEnabled;
nsCString mCompatFirefox; nsCString mCompatFirefox;
nsCString mCompatFirefoxVersion;
bool mCompatFirefoxEnabled; bool mCompatFirefoxEnabled;
nsXPIDLCString mCompatDevice; nsXPIDLCString mCompatDevice;
nsCString mDeviceModelId; nsCString mDeviceModelId;