Blob Blame History Raw
diff -Nrup mozilla-OLD/netwerk/protocol/http/nsHttpHandler.cpp mozilla/netwerk/protocol/http/nsHttpHandler.cpp
--- mozilla-OLD/netwerk/protocol/http/nsHttpHandler.cpp	2022-02-13 20:42:07.863181373 +0300
+++ mozilla/netwerk/protocol/http/nsHttpHandler.cpp	2022-02-13 20:36:43.690319164 +0300
@@ -218,6 +218,7 @@ nsHttpHandler::nsHttpHandler()
     , mLegacyAppName("Mozilla")
     , mLegacyAppVersion("5.0")
     , mProduct("Gecko")
+    , mCompatFirefoxVersion(MOZILLA_UAVERSION)
     , mCompatFirefoxEnabled(false)
     , mCompatFirefoxStrict(false)
     , mUserAgentIsDirty(true)
@@ -452,9 +453,11 @@ nsHttpHandler::Init()
 
     nsHttpChannelAuthProvider::InitializePrefs();
 
-    mMisc.AssignLiteral("rv:" MOZILLA_UAVERSION);
+    mMisc.AssignLiteral("rv:");
+    mMisc += mCompatFirefoxVersion;
 
-    mCompatFirefox.AssignLiteral("Firefox/" MOZILLA_UAVERSION);
+    mCompatFirefox.AssignLiteral("Firefox/");
+    mCompatFirefox += mCompatFirefoxVersion;
 
     nsCOMPtr<nsIXULAppInfo> appInfo =
         do_GetService("@mozilla.org/xre/app-info;1");
@@ -1164,6 +1167,24 @@ nsHttpHandler::PrefsChanged(nsIPrefBranc
         mUserAgentIsDirty = true;
     }
 
+    // general.useragent.compatMode.version
+    if (PREF_CHANGED(UA_PREF("compatMode.version"))) {
+        nsAutoCString sval;
+
+        prefs->GetCharPref(UA_PREF("compatMode.version"), sval);
+        if (sval.IsVoid() || sval.IsEmpty()) 
+            mCompatFirefoxVersion.AssignLiteral(MOZILLA_UAVERSION);
+        else
+            mCompatFirefoxVersion.Assign(sval);
+
+        mMisc.AssignLiteral("rv:");
+        mMisc += mCompatFirefoxVersion;
+        mCompatFirefox.AssignLiteral("Firefox/");
+        mCompatFirefox += mCompatFirefoxVersion;
+
+        mUserAgentIsDirty = true;
+    }
+
     // general.useragent.override
     if (PREF_CHANGED(UA_PREF("override"))) {
         prefs->GetCharPref(UA_PREF("override"), mUserAgentOverride);
diff -Nrup mozilla-OLD/netwerk/protocol/http/nsHttpHandler.h mozilla/netwerk/protocol/http/nsHttpHandler.h
--- mozilla-OLD/netwerk/protocol/http/nsHttpHandler.h	2021-03-01 21:17:57.000000000 +0300
+++ mozilla/netwerk/protocol/http/nsHttpHandler.h	2022-02-13 20:11:18.012385859 +0300
@@ -519,6 +519,7 @@ private:
     nsCString      mAppName;
     nsCString      mAppVersion;
     nsCString      mCompatFirefox;
+    nsCString      mCompatFirefoxVersion;
     bool           mCompatFirefoxEnabled;
     bool           mCompatFirefoxStrict;
     nsCString      mCompatDevice;
diff -Nrup mozilla-OLD/comm/suite/browser/nsBrowserContentHandler.js mozilla/comm/suite/browser/nsBrowserContentHandler.js
--- mozilla-OLD/comm/suite/browser/nsBrowserContentHandler.js	2021-08-08 16:29:32.000000000 +0300
+++ mozilla/comm/suite/browser/nsBrowserContentHandler.js	2022-02-13 22:16:55.754596833 +0300
@@ -97,8 +97,11 @@ function needHomePageOverride()
   } catch (e) {
   }
 
-  var mstone = Cc["@mozilla.org/network/protocol;1?name=http"]
-                 .getService(nsIHttpProtocolHandler).misc;
+  /*  Since the "misc" part in UA string can be changed
+   *  by "general.useragent.compatMode.version" pref, use
+   *  compile time hardcoded value instead.
+   */
+  var mstone = "rv:" + Services.appinfo.platformVersion.split(".")[0] + ".0";
 
   if (mstone == savedmstone)
     return false;
diff -Nrup mozilla-OLD/comm/suite/components/pref/content/pref-http.xul mozilla/comm/suite/components/pref/content/pref-http.xul
--- mozilla-OLD/comm/suite/components/pref/content/pref-http.xul	2021-08-08 16:29:32.000000000 +0300
+++ mozilla/comm/suite/components/pref/content/pref-http.xul	2022-02-15 16:00:36.738176787 +0300
@@ -22,6 +22,9 @@
       <preference id="general.useragent.compatMode.strict-firefox"
                   name="general.useragent.compatMode.strict-firefox"
                   type="bool"/>
+      <preference id="general.useragent.compatMode.version"
+                  name="general.useragent.compatMode.version"
+                  type="string"/>
     </preferences>
 
     <description>&prefPara;</description>
@@ -74,6 +77,16 @@
                label="&prefFirefoxCompat2.label;"
                accesskey="&prefFirefoxCompat2.accesskey;"/>
       </radiogroup>
+      <raw align="center">
+        <hbox align="center">
+          <label value="&prefFirefoxVersion.label;"
+                 accesskey="&prefFirefoxVersion.accesskey;"
+                 control="uaFirefoxVersion"/>
+        </hbox>
+      <textbox id="uaFirefoxVersion"
+               size="3"
+               preference="general.useragent.compatMode.version"/>
+      </raw>
     </groupbox>
 
     <description>&prefCompatWarning2.desc;</description>
diff -Nrup mozilla-OLD/comm/suite/locales/en-US/chrome/common/pref/pref-http.dtd mozilla/comm/suite/locales/en-US/chrome/common/pref/pref-http.dtd
--- mozilla-OLD/comm/suite/locales/en-US/chrome/common/pref/pref-http.dtd	2021-08-08 16:29:32.000000000 +0300
+++ mozilla/comm/suite/locales/en-US/chrome/common/pref/pref-http.dtd	2022-02-15 16:04:02.729678328 +0300
@@ -21,4 +21,6 @@
 <!ENTITY prefFirefoxNone.accesskey           "M">
 <!ENTITY prefFirefoxCompat2.label            "Identify as SeaMonkey and advertise Firefox compatibility">
 <!ENTITY prefFirefoxCompat2.accesskey        "F">
+<!ENTITY prefFirefoxVersion.label            "Report Firefox version:">
+<!ENTITY prefFirefoxVersion.accesskey        "R">
 <!ENTITY prefCompatWarning2.desc             "WARNING: changing this setting may result in websites or services not working properly.">