Bug 1939881: Implement RFPTargetBits and replace appropriate uses. r=tjr

This is a huge patch, but it is only really refactoring of RFPTarget enum. We used to use RFPTarget as a bitset and now we ran out of bits, so now we need a workaround.

Differential Revision: https://phabricator.services.mozilla.com/D233182
This commit is contained in:
Fatih Kilic
2025-01-23 14:49:44 +00:00
parent 6f24b3ba80
commit 73f4f01465
39 changed files with 377 additions and 251 deletions

View File

@@ -60,6 +60,7 @@
#include "mozilla/RemoteDecoderManagerChild.h"
#include "mozilla/KeySystemConfig.h"
#include "mozilla/WheelHandlingHelper.h"
#include "nsIRFPTargetSetIDL.h"
#include "nsContentSecurityUtils.h"
#include "nsString.h"
#include "nsNativeTheme.h"
@@ -2317,7 +2318,7 @@ void ChromeUtils::GetAllPossibleUtilityActorNames(GlobalObject& aGlobal,
/* static */
bool ChromeUtils::ShouldResistFingerprinting(
GlobalObject& aGlobal, JSRFPTarget aTarget,
const Nullable<uint64_t>& aOverriddenFingerprintingSettings,
nsIRFPTargetSetIDL* aOverriddenFingerprintingSettings,
const Optional<bool>& aIsPBM) {
RFPTarget target;
switch (aTarget) {
@@ -2351,10 +2352,16 @@ bool ChromeUtils::ShouldResistFingerprinting(
}
}
Maybe<RFPTarget> overriddenFingerprintingSettings;
if (!aOverriddenFingerprintingSettings.IsNull()) {
overriddenFingerprintingSettings.emplace(
RFPTarget(aOverriddenFingerprintingSettings.Value()));
Maybe<RFPTargetSet> overriddenFingerprintingSettings;
if (aOverriddenFingerprintingSettings) {
uint64_t low, hi;
aOverriddenFingerprintingSettings->GetLow(&low);
aOverriddenFingerprintingSettings->GetHigh(&hi);
std::bitset<128> bitset;
bitset |= hi;
bitset <<= 64;
bitset |= low;
overriddenFingerprintingSettings.emplace(RFPTargetSet(bitset));
}
// This global object appears to be the global window, not for individual