1
0
mirror of https://github.com/roytam1/UXP.git synced 2026-05-26 13:58:49 +00:00

Update UA construction.

This commit is contained in:
wolfbeast
2017-08-10 23:16:51 +02:00
committed by Roy Tam
parent 49ffafc979
commit b3ce96c6d7
6 changed files with 64 additions and 13 deletions
+54 -11
View File
@@ -103,6 +103,9 @@
#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 {
@@ -316,9 +319,11 @@ nsHttpHandler::Init()
nsHttpChannelAuthProvider::InitializePrefs();
mMisc.AssignLiteral("rv:" MOZILLA_UAVERSION);
// rv: should have the Firefox/Gecko compatversion for web compatibility
mMisc.AssignLiteral("rv:" MOZILLA_COMPATVERSION);
mCompatFirefox.AssignLiteral("Firefox/" MOZILLA_UAVERSION);
mCompatGecko.AssignLiteral("Gecko/20100101");
mCompatFirefox.AssignLiteral("Firefox/" MOZILLA_COMPATVERSION);
nsCOMPtr<nsIXULAppInfo> appInfo =
do_GetService("@mozilla.org/xre/app-info;1");
@@ -330,12 +335,30 @@ nsHttpHandler::Init()
if (mAppName.Length() == 0) {
appInfo->GetName(mAppName);
}
appInfo->GetVersion(mAppVersion);
mAppName.StripChars(R"( ()<>@,;:\"/[]?={})");
} else {
mAppVersion.AssignLiteral(MOZ_APP_UA_VERSION);
}
nsCString dynamicBuildID;
if (appInfo) {
appInfo->GetPlatformBuildID(dynamicBuildID);
if (dynamicBuildID.Length() > 8 )
dynamicBuildID.Left(dynamicBuildID, 8);
}
if (mAppVersionIsBuildID) {
// Override BuildID
mAppVersion.AssignLiteral(MOZ_UA_BUILDID);
} else if (appInfo) {
appInfo->GetVersion(mAppVersion);
} else {
// Fall back to platform if appInfo is unavailable
mAppVersion.Assign(MOZILLA_UAVERSION);
}
// If there's no override set, set it to the dynamic BuildID
if (mAppVersion.IsEmpty())
mAppVersion.Assign(dynamicBuildID);
mSessionStartTime = NowInSeconds();
mHandlerActive = true;
@@ -351,11 +374,11 @@ nsHttpHandler::Init()
mRequestContextService =
do_GetService("@mozilla.org/network/request-context-service;1");
#if defined(ANDROID) || defined(MOZ_MULET)
// Goanna slice version
mProductSub.AssignLiteral(MOZILLA_UAVERSION);
#else
mProductSub.AssignLiteral("20100101");
#endif
if (mProductSub.IsEmpty())
mProductSub.Assign(dynamicBuildID);
#if DEBUG
// dump user agent prefs
@@ -369,6 +392,7 @@ nsHttpHandler::Init()
LOG(("> app-name = %s\n", mAppName.get()));
LOG(("> app-version = %s\n", mAppVersion.get()));
LOG(("> compat-firefox = %s\n", mCompatFirefox.get()));
LOG(("> compat-gecko = %s\n", mCompatGecko.get()));
LOG(("> user-agent = %s\n", UserAgent().get()));
#endif
@@ -678,9 +702,10 @@ nsHttpHandler::BuildUserAgent()
mAppName.Length() +
mAppVersion.Length() +
mCompatFirefox.Length() +
mCompatGecko.Length() +
mCompatDevice.Length() +
mDeviceModelId.Length() +
13);
14);
// Application portion
mUserAgent.Assign(mLegacyAppName);
@@ -710,6 +735,12 @@ nsHttpHandler::BuildUserAgent()
}
mUserAgent += mMisc;
mUserAgent += ')';
if(mCompatGeckoEnabled) {
// Provide frozen Gecko/20100101 slice
mUserAgent += ' ';
mUserAgent += mCompatGecko;
}
// Product portion
mUserAgent += ' ';
@@ -719,7 +750,7 @@ nsHttpHandler::BuildUserAgent()
bool isFirefox = mAppName.EqualsLiteral("Firefox");
if (isFirefox || mCompatFirefoxEnabled) {
// "Firefox/x.y" (compatibility) app token
// Provide "Firefox/x.y" (compatibility) app token
mUserAgent += ' ';
mUserAgent += mCompatFirefox;
}
@@ -966,6 +997,18 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
bool cVar = false;
if (PREF_CHANGED(UA_PREF("appVersionIsBuildID"))) {
rv = prefs->GetBoolPref(UA_PREF("appVersionIsBuildID"), &cVar);
mAppVersionIsBuildID = (NS_SUCCEEDED(rv) && cVar);
mUserAgentIsDirty = true;
}
if (PREF_CHANGED(UA_PREF("compatMode.gecko"))) {
rv = prefs->GetBoolPref(UA_PREF("compatMode.gecko"), &cVar);
mCompatGeckoEnabled = (NS_SUCCEEDED(rv) && cVar);
mUserAgentIsDirty = true;
}
if (PREF_CHANGED(UA_PREF("compatMode.firefox"))) {
rv = prefs->GetBoolPref(UA_PREF("compatMode.firefox"), &cVar);
mCompatFirefoxEnabled = (NS_SUCCEEDED(rv) && cVar);