diff --git a/build/patches/Multiple-fingerprinting-mitigations.patch b/build/patches/Multiple-fingerprinting-mitigations.patch index 098f61f1..5e4c1dee 100644 --- a/build/patches/Multiple-fingerprinting-mitigations.patch +++ b/build/patches/Multiple-fingerprinting-mitigations.patch @@ -42,7 +42,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../renderer/core/html/canvas/text_metrics.h | 2 + .../renderer/core/svg/svg_graphics_element.cc | 2 + .../core/svg/svg_text_content_element.cc | 28 +++- - .../canvas2d/base_rendering_context_2d.cc | 12 +- + .../canvas2d/base_rendering_context_2d.cc | 24 ++- third_party/blink/renderer/platform/BUILD.gn | 5 +- .../platform/exported/web_runtime_features.cc | 12 ++ .../platform/graphics/image_data_buffer.cc | 7 + @@ -52,7 +52,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html third_party/ungoogled/BUILD.gn | 10 ++ third_party/ungoogled/ungoogled_switches.cc | 18 ++ third_party/ungoogled/ungoogled_switches.h | 18 ++ - 26 files changed, 376 insertions(+), 8 deletions(-) + 26 files changed, 388 insertions(+), 8 deletions(-) create mode 100644 third_party/ungoogled/BUILD.gn create mode 100644 third_party/ungoogled/ungoogled_switches.cc create mode 100644 third_party/ungoogled/ungoogled_switches.h @@ -475,7 +475,17 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c #include "third_party/blink/renderer/platform/graphics/skia/skia_utils.h" #include "third_party/blink/renderer/platform/graphics/stroke_data.h" #include "third_party/blink/renderer/platform/graphics/video_frame_image_util.h" -@@ -2188,6 +2189,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( +@@ -53,6 +54,9 @@ + #include "ui/gfx/geometry/quad_f.h" + #include "ui/gfx/geometry/skia_conversions.h" + ++#include "third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h" ++#include "third_party/blink/renderer/core/frame/local_dom_window.h" ++ + namespace blink { + + BASE_FEATURE(kDisableCanvasOverdrawOptimization, +@@ -2188,6 +2192,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( snapshot->PaintImageForCurrentFrame().GetSkImageInfo().bounds(); DCHECK(!bounds.intersect(SkIRect::MakeXYWH(sx, sy, sw, sh))); } @@ -486,7 +496,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c } return image_data; -@@ -2865,9 +2870,14 @@ TextMetrics* BaseRenderingContext2D::measureText(const String& text) { +@@ -2865,9 +2873,23 @@ TextMetrics* BaseRenderingContext2D::measureText(const String& text) { TextDirection direction = ToTextDirection(GetState().GetDirection(), canvas); @@ -496,7 +506,16 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c GetState().GetTextAlign(), text); + // Scale text metrics if enabled + if (RuntimeEnabledFeatures::FingerprintingCanvasMeasureTextNoiseEnabled()) { -+ text_metrics->Shuffle(canvas->GetDocument().GetNoiseFactorX()); ++ OffscreenCanvas* offscreen_canvas = HostAsOffscreenCanvas(); ++ if (offscreen_canvas) { ++ ExecutionContext* execution_context = GetTopExecutionContext(); ++ if (auto* window = DynamicTo(execution_context)) { ++ Document* document = window->GetFrame()->GetDocument(); ++ text_metrics->Shuffle(document->GetNoiseFactorX()); ++ } ++ } ++ else ++ text_metrics->Shuffle(canvas->GetDocument().GetNoiseFactorX()); + } + return text_metrics; }