commit 05e11564b0f449829262ded7f2fc2809eb3dc5ce
parent 2a597f21c28345e274cc9ace5e52d73539a7fb9c
Author: Tom Ritter <tom@mozilla.com>
Date: Fri, 19 Dec 2025 14:47:59 +0000
Bug 2005273: Add sources and combinations we know occur in the wild r=timhuang
Differential Revision: https://phabricator.services.mozilla.com/D276878
Diffstat:
3 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/toolkit/components/antitracking/metrics.yaml b/toolkit/components/antitracking/metrics.yaml
@@ -174,7 +174,10 @@ contentblocking:
# 2^33 - 2^40
"8589934592", "17179869184", "34359738368", "68719476736", "137438953472", "274877906944", "549755813888", "1099511627776",
# Known Combinations
- "80", "144", "208", "8388736"
+ "17", "65", "80", "81", "96", "144", "145", "192", "208", "209", "241", "1040", "1041", "1088", "1104", "1152", "1168",
+ "1169", "1216", "1232", "1233", "1265", "8388624", "8388688", "8388736", "8388752", "8388816", "2147483649", "2147483665",
+ "2147483712", "2147483713", "2147483793", "4294967297", "4294967312", "4294967328", "4294967360", "4294967361", "4294967376",
+ "4294967424", "4294967440", "4294967504", "4294968384", "4294968400", "4294968529", "36507222016", "40802189312"
]
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1873716
@@ -214,9 +217,9 @@ contentblocking:
"80", "144", "208", "8388736"
]
bugs:
- - https://bugzilla.mozilla.org/show_bug.cgi?id=
+ - https://bugzilla.mozilla.org/show_bug.cgi?id=1873716
data_reviews:
- - https://bugzilla.mozilla.org/show_bug.cgi?id=
+ - https://bugzilla.mozilla.org/show_bug.cgi?id=1847990
notification_emails:
- seceng-telemetry@mozilla.com
expires: 165
diff --git a/toolkit/components/resistfingerprinting/nsRFPService.cpp b/toolkit/components/resistfingerprinting/nsRFPService.cpp
@@ -2211,6 +2211,20 @@ CanvasUsageSource CanvasUsage::GetCanvasUsageSource(
logImpossible("Unknown API for Canvas2D");
return CanvasUsageSource::Impossible;
}
+ case dom::CanvasContextType::OffscreenCanvas2D:
+ // Very confused about how we get an OffscreenCanvas2D context without
+ // an OffscreenCanvas but it does happen in the wild...
+ switch (api) {
+ case CanvasExtractionAPI::GetImageData:
+ return CanvasUsageSource::
+ MainThread_Canvas_OffscreenCanvas2D_getImageData;
+ case CanvasExtractionAPI::ToBlob:
+ return CanvasUsageSource::
+ MainThread_Canvas_OffscreenCanvas2D_toBlob;
+ default:
+ logImpossible("Unsupported API for OffscreenCanvas2D");
+ return CanvasUsageSource::Impossible;
+ }
case dom::CanvasContextType::WebGL1:
case dom::CanvasContextType::WebGL2:
switch (api) {
@@ -2286,10 +2300,6 @@ CanvasUsageSource CanvasUsage::GetCanvasUsageSource(
return CanvasUsageSource::Impossible;
}
case dom::CanvasContextType::OffscreenCanvas2D:
- if (isMainThread) {
- logImpossible("OffscreenCanvas2D on main thread");
- return CanvasUsageSource::Impossible;
- }
switch (api) {
case CanvasExtractionAPI::GetImageData:
return Worker_OffscreenCanvasCanvas2D_Canvas2D_getImageData;
diff --git a/toolkit/components/resistfingerprinting/nsRFPService.h b/toolkit/components/resistfingerprinting/nsRFPService.h
@@ -305,6 +305,12 @@ enum CanvasUsageSource : uint64_t {
Worker_OffscreenCanvas_WebGPU_toBlob = 1llu << 36,
Worker_OffscreenCanvas_WebGPU_getImageData = 1llu << 37,
+ // --- New entires added here to preserve original values (no reordering!)
+ MainThread_Canvas_OffscreenCanvas2D_getImageData = 1llu << 38,
+ MainThread_Canvas_OffscreenCanvas2D_toBlob = 1llu << 39,
+
+ // After you go past 40 - metrics.yaml will need to be updated
+
};
MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(CanvasUsageSource);
nsCString CanvasUsageSourceToString(CanvasUsageSource aSource);