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.">