Issue #1505 - Rebuild application version string

To respond dynamically to the pref change, the mAppVersion string needs
to be rebuilt.
Includes some minor improvements for corner cases and removes leftover
b2g junk.
This commit is contained in:
wolfbeast
2020-04-05 11:48:09 +02:00
committed by Roy Tam
parent 011949484d
commit 41a3028a67
2 changed files with 46 additions and 37 deletions
+45 -37
View File
@@ -310,28 +310,9 @@ nsHttpHandler::Init()
}
mAppName.StripChars(R"( ()<>@,;:\"/[]?={})");
}
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.AssignLiteral(MOZILLA_UAVERSION);
}
BuildAppVersion();
// If there's no override set, set it to the dynamic BuildID
if (mAppVersion.IsEmpty())
mAppVersion.Assign(dynamicBuildID);
mSessionStartTime = NowInSeconds();
mHandlerActive = true;
@@ -350,8 +331,15 @@ nsHttpHandler::Init()
// Goanna slice version
mProductSub.AssignLiteral(MOZILLA_UAVERSION);
if (mProductSub.IsEmpty())
mProductSub.Assign(dynamicBuildID);
if (mProductSub.IsEmpty()) {
nsCString dynamicBuildID;
if (appInfo) {
appInfo->GetPlatformBuildID(dynamicBuildID);
if (dynamicBuildID.Length() > 8 )
dynamicBuildID.Left(dynamicBuildID, 8);
}
mProductSub.Assign(dynamicBuildID);
}
#if DEBUG
// dump user agent prefs
@@ -657,6 +645,37 @@ nsHttpHandler::GenerateHostPort(const nsCString& host, int32_t port,
// nsHttpHandler <private>
//-----------------------------------------------------------------------------
void
nsHttpHandler::BuildAppVersion()
{
nsCOMPtr<nsIXULAppInfo> appInfo = do_GetService("@mozilla.org/xre/app-info;1");
nsCString dynamicBuildID;
if (appInfo) {
appInfo->GetPlatformBuildID(dynamicBuildID);
if (dynamicBuildID.Length() > 8 )
dynamicBuildID.Left(dynamicBuildID, 8);
}
if (mAppVersionIsBuildID) {
// Override BuildID
mAppVersion.Assign(dynamicBuildID);
} else if (appInfo) {
appInfo->GetVersion(mAppVersion);
} else {
// Fall back to platform if appInfo is unavailable
mAppVersion.AssignLiteral(MOZILLA_UAVERSION);
}
// If there's still no version set, set it to a fixed BuildID
if (mAppVersion.IsEmpty()) {
mAppVersion.AssignLiteral(MOZ_UA_BUILDID);
}
if (mAppVersion.IsEmpty()) {
mAppVersion.AssignLiteral("20200101");
}
}
const nsAFlatCString &
nsHttpHandler::UserAgent()
{
@@ -782,21 +801,6 @@ nsHttpHandler::InitUserAgentComponents()
);
#endif
#ifdef MOZ_MULET
{
// Add the `Mobile` or `Tablet` or `TV` token when running in the b2g
// desktop simulator via preference.
nsCString deviceType;
nsresult rv = Preferences::GetCString("devtools.useragent.device_type", &deviceType);
if (NS_SUCCEEDED(rv)) {
mCompatDevice.Assign(deviceType);
} else {
mCompatDevice.AssignLiteral("Mobile");
}
}
#endif // MOZ_MULET
#ifndef MOZ_UA_OS_AGNOSTIC
// Gather OS/CPU.
#if defined(XP_WIN)
@@ -924,6 +928,10 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
if (PREF_CHANGED(UA_PREF("appVersionIsBuildID"))) {
rv = prefs->GetBoolPref(UA_PREF("appVersionIsBuildID"), &cVar);
mAppVersionIsBuildID = (NS_SUCCEEDED(rv) && cVar);
// Rebuild application version string.
BuildAppVersion();
mUserAgentIsDirty = true;
}
+1
View File
@@ -391,6 +391,7 @@ private:
//
// Useragent/prefs helper methods
//
void BuildAppVersion();
void BuildUserAgent();
void InitUserAgentComponents();
void PrefsChanged(nsIPrefBranch *prefs, const char *pref);