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-22 23:46:31 +00:00
parent 2517223f0c
commit a0beaee8e2
38 changed files with 375 additions and 250 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"
@@ -2444,7 +2445,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) {
@@ -2478,10 +2479,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