Bug 1752907: Cut over Hardware Concurrency to finer-grained RFP Check r=tjr

Differential Revision: https://phabricator.services.mozilla.com/D137481
This commit is contained in:
asharma 2022-02-07 20:26:28 +00:00
parent f97318414e
commit 9fd77ce12f
4 changed files with 10 additions and 5 deletions

View File

@ -645,7 +645,8 @@ uint64_t Navigator::HardwareConcurrency() {
return 1; return 1;
} }
return rts->ClampedHardwareConcurrency(); return rts->ClampedHardwareConcurrency(
nsContentUtils::ShouldResistFingerprinting(mWindow->GetExtantDoc()));
} }
namespace { namespace {

View File

@ -1994,11 +1994,12 @@ void RuntimeService::MemoryPressureAllWorkers() {
BroadcastAllWorkers([](auto& worker) { worker.MemoryPressure(); }); BroadcastAllWorkers([](auto& worker) { worker.MemoryPressure(); });
} }
uint32_t RuntimeService::ClampedHardwareConcurrency() const { uint32_t RuntimeService::ClampedHardwareConcurrency(
bool aShouldResistFingerprinting) const {
// The Firefox Hardware Report says 70% of Firefox users have exactly 2 cores. // The Firefox Hardware Report says 70% of Firefox users have exactly 2 cores.
// When the resistFingerprinting pref is set, we want to blend into the crowd // When the resistFingerprinting pref is set, we want to blend into the crowd
// so spoof navigator.hardwareConcurrency = 2 to reduce user uniqueness. // so spoof navigator.hardwareConcurrency = 2 to reduce user uniqueness.
if (MOZ_UNLIKELY(nsContentUtils::ShouldResistFingerprinting())) { if (MOZ_UNLIKELY(aShouldResistFingerprinting)) {
return 2; return 2;
} }

View File

@ -178,7 +178,7 @@ class RuntimeService final : public nsIObserver {
void MemoryPressureAllWorkers(); void MemoryPressureAllWorkers();
uint32_t ClampedHardwareConcurrency() const; uint32_t ClampedHardwareConcurrency(bool aShouldResistFingerprinting) const;
void CrashIfHanging(); void CrashIfHanging();

View File

@ -176,7 +176,10 @@ uint64_t WorkerNavigator::HardwareConcurrency() const {
RuntimeService* rts = RuntimeService::GetService(); RuntimeService* rts = RuntimeService::GetService();
MOZ_ASSERT(rts); MOZ_ASSERT(rts);
return rts->ClampedHardwareConcurrency(); WorkerPrivate* aWorkerPrivate = GetCurrentThreadWorkerPrivate();
bool rfp = aWorkerPrivate->ShouldResistFingerprinting();
return rts->ClampedHardwareConcurrency(rfp);
} }
StorageManager* WorkerNavigator::Storage() { StorageManager* WorkerNavigator::Storage() {