morgan pushed to branch base-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser
Commits:
- 
fbb66fd9
by Pier Angelo Vendrame at 2024-09-03T18:29:34+00:00
 
2 changed files:
Changes:
| ... | ... | @@ -482,6 +482,9 @@ nsresult nsHttpHandler::Init() { | 
| 482 | 482 |      // obsService->AddObserver(this, "net:failed-to-process-uri-content", true);
 | 
| 483 | 483 |    }
 | 
| 484 | 484 | |
| 485 | +  Preferences::AddWeakObserver(
 | 
|
| 486 | +      this, "privacy.resistFingerprinting.spoofOsInUserAgentHeader"_ns);
 | 
|
| 487 | +  | 
|
| 485 | 488 |    MakeNewRequestTokenBucket();
 | 
| 486 | 489 |    mWifiTickler = new Tickler();
 | 
| 487 | 490 |    if (NS_FAILED(mWifiTickler->Init())) mWifiTickler = nullptr;
 | 
| ... | ... | @@ -2105,6 +2108,9 @@ nsHttpHandler::Observe(nsISupports* subject, const char* topic, | 
| 2105 | 2108 |      // Inform nsIOService that network is tearing down.
 | 
| 2106 | 2109 |      gIOService->SetHttpHandlerAlreadyShutingDown();
 | 
| 2107 | 2110 | |
| 2111 | +    Preferences::RemoveObserver(
 | 
|
| 2112 | +        this, "privacy.resistFingerprinting.spoofOsInUserAgentHeader"_ns);
 | 
|
| 2113 | +  | 
|
| 2108 | 2114 |      ShutdownConnectionManager();
 | 
| 2109 | 2115 | |
| 2110 | 2116 |      // need to reset the session start time since cache validation may
 | 
| ... | ... | @@ -2227,6 +2233,11 @@ nsHttpHandler::Observe(nsISupports* subject, const char* topic, | 
| 2227 | 2233 |      ShutdownConnectionManager();
 | 
| 2228 | 2234 |      mConnMgr = nullptr;
 | 
| 2229 | 2235 |      Unused << InitConnectionMgr();
 | 
| 2236 | +  } else if (!strcmp(topic, "nsPref:changed") &&
 | 
|
| 2237 | +             !NS_strcmp(
 | 
|
| 2238 | +                 data,
 | 
|
| 2239 | +                 u"privacy.resistFingerprinting.spoofOsInUserAgentHeader")) {
 | 
|
| 2240 | +    nsRFPService::GetSpoofedUserAgent(mSpoofedUserAgent, true);
 | 
|
| 2230 | 2241 |    }
 | 
| 2231 | 2242 | |
| 2232 | 2243 |    return NS_OK;
 | 
| ... | ... | @@ -904,12 +904,17 @@ void nsRFPService::GetSpoofedUserAgent(nsACString& userAgent, | 
| 904 | 904 |    // https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID/userAgent
 | 
| 905 | 905 |    // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent
 | 
| 906 | 906 | |
| 907 | +  const bool spoofOs =
 | 
|
| 908 | +      isForHTTPHeader &&
 | 
|
| 909 | +      Preferences::GetBool(
 | 
|
| 910 | +          "privacy.resistFingerprinting.spoofOsInUserAgentHeader", true);
 | 
|
| 911 | +  | 
|
| 907 | 912 |    // These magic numbers are the lengths of the UA string literals below.
 | 
| 908 | 913 |    // Assume three-digit Firefox version numbers so we have room to grow.
 | 
| 909 | 914 |    size_t preallocatedLength =
 | 
| 910 | 915 |        13 +
 | 
| 911 | -      (isForHTTPHeader ? mozilla::ArrayLength(SPOOFED_HTTP_UA_OS)
 | 
|
| 912 | -                       : mozilla::ArrayLength(SPOOFED_UA_OS)) -
 | 
|
| 916 | +      (spoofOs ? mozilla::ArrayLength(SPOOFED_HTTP_UA_OS)
 | 
|
| 917 | +               : mozilla::ArrayLength(SPOOFED_UA_OS)) -
 | 
|
| 913 | 918 |        1 + 5 + 3 + 10 + mozilla::ArrayLength(LEGACY_UA_GECKO_TRAIL) - 1 + 9 + 3 +
 | 
| 914 | 919 |        2;
 | 
| 915 | 920 |    userAgent.SetCapacity(preallocatedLength);
 | 
| ... | ... | @@ -917,7 +922,7 @@ void nsRFPService::GetSpoofedUserAgent(nsACString& userAgent, | 
| 917 | 922 |    // "Mozilla/5.0 (%s; rv:%d.0) Gecko/%d Firefox/%d.0"
 | 
| 918 | 923 |    userAgent.AssignLiteral("Mozilla/5.0 (");
 | 
| 919 | 924 | |
| 920 | -  if (isForHTTPHeader) {
 | 
|
| 925 | +  if (spoofOs) {
 | 
|
| 921 | 926 |      userAgent.AppendLiteral(SPOOFED_HTTP_UA_OS);
 | 
| 922 | 927 |    } else {
 | 
| 923 | 928 |      userAgent.AppendLiteral(SPOOFED_UA_OS);
 |