summaryrefslogtreecommitdiffstats
path: root/netwerk/protocol/http
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2020-04-05 11:48:09 +0200
committerwolfbeast <mcwerewolf@wolfbeast.com>2020-04-14 13:24:32 +0200
commit02327fa74537330180ad07067a4d5b3c3b0fc71b (patch)
tree35f3c767f8243d056c6939ecae6d9fbd24214dda /netwerk/protocol/http
parentb470422d5a86f5e6c97bfe7a935b4abd9e167077 (diff)
downloadUXP-02327fa74537330180ad07067a4d5b3c3b0fc71b.tar
UXP-02327fa74537330180ad07067a4d5b3c3b0fc71b.tar.gz
UXP-02327fa74537330180ad07067a4d5b3c3b0fc71b.tar.lz
UXP-02327fa74537330180ad07067a4d5b3c3b0fc71b.tar.xz
UXP-02327fa74537330180ad07067a4d5b3c3b0fc71b.zip
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.
Diffstat (limited to 'netwerk/protocol/http')
-rw-r--r--netwerk/protocol/http/nsHttpHandler.cpp82
-rw-r--r--netwerk/protocol/http/nsHttpHandler.h1
2 files changed, 46 insertions, 37 deletions
diff --git a/netwerk/protocol/http/nsHttpHandler.cpp b/netwerk/protocol/http/nsHttpHandler.cpp
index 32e50712f..cb3c7ae04 100644
--- a/netwerk/protocol/http/nsHttpHandler.cpp
+++ b/netwerk/protocol/http/nsHttpHandler.cpp
@@ -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;
}
diff --git a/netwerk/protocol/http/nsHttpHandler.h b/netwerk/protocol/http/nsHttpHandler.h
index 402147577..36fda6ace 100644
--- a/netwerk/protocol/http/nsHttpHandler.h
+++ b/netwerk/protocol/http/nsHttpHandler.h
@@ -391,6 +391,7 @@ private:
//
// Useragent/prefs helper methods
//
+ void BuildAppVersion();
void BuildUserAgent();
void InitUserAgentComponents();
void PrefsChanged(nsIPrefBranch *prefs, const char *pref);