[webkit-changes] [WebKit/WebKit] 8e854f: Refactor some logic for applying noise injection t...
Wenson Hsieh
noreply at github.com
Fri Sep 20 09:00:52 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8e854f3eec7d4e639e016f021ee88cea21bf3575
https://github.com/WebKit/WebKit/commit/8e854f3eec7d4e639e016f021ee88cea21bf3575
Author: Wenson Hsieh <wenson_hsieh at apple.com>
Date: 2024-09-20 (Fri, 20 Sep 2024)
Changed paths:
M Source/WebCore/Modules/webaudio/BaseAudioContext.cpp
M Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp
M Source/WebCore/html/CanvasBase.cpp
M Source/WebCore/html/CanvasBase.h
M Source/WebCore/html/HTMLCanvasElement.cpp
M Source/WebCore/html/OffscreenCanvas.cpp
M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp
M Source/WebCore/loader/DocumentLoader.cpp
M Source/WebCore/loader/DocumentLoader.h
M Source/WebCore/workers/WorkerOrWorkletGlobalScope.cpp
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
M Tools/TestWebKitAPI/Tests/WebKit/AdvancedPrivacyProtections.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/audio-fingerprinting.html
A Tools/TestWebKitAPI/Tests/WebKitCocoa/audio-fingerprinting.js
M Tools/TestWebKitAPI/Tests/WebKitCocoa/canvas-fingerprinting.html
A Tools/TestWebKitAPI/Tests/WebKitCocoa/canvas-fingerprinting.js
Log Message:
-----------
Refactor some logic for applying noise injection to canvas and web audio in Private Browsing
https://bugs.webkit.org/show_bug.cgi?id=280010
Reviewed by Abrar Rahman Protyasha.
Adjust codepaths for injecting noise into canvas and web-audio-related APIs.
* Source/WebCore/Modules/webaudio/BaseAudioContext.cpp:
(WebCore::effectiveNoiseInjectionPolicies):
(WebCore::BaseAudioContext::BaseAudioContext):
Set `m_noiseInjectionPolicies`, based on the current script telemetry state.
* Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp:
(WebCore::RealtimeAnalyser::doFFTAnalysisIfNecessary):
Honor `NoiseInjectionPolicy::Enhanced`.
* Source/WebCore/html/CanvasBase.cpp:
Set `m_canvasNoiseHashSalt`, based on the current script telemetry state.
(WebCore::CanvasBase::createImageForNoiseInjection const):
* Source/WebCore/html/CanvasBase.h:
* Source/WebCore/html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::toDataURL):
(WebCore::HTMLCanvasElement::toBlob):
Apply additional mitigations to a subset of APIs, to make it impossible to use side channels (e.g.
timing attacks) to infer further details about the underlying OS or hardware.
* Source/WebCore/html/OffscreenCanvas.cpp:
(WebCore::OffscreenCanvas::convertToBlob):
* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::getImageData const):
* Source/WebCore/loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::fingerprintingProtectionsEnabled const): Deleted.
* Source/WebCore/loader/DocumentLoader.h:
Drive-by fix: delete an unused method.
* Source/WebCore/workers/WorkerOrWorkletGlobalScope.cpp:
(WebCore::WorkerOrWorkletGlobalScope::noiseInjectionPolicies const):
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKit/AdvancedPrivacyProtections.mm:
(TestWebKitAPI::TEST(AdvancedPrivacyProtections, VerifyHashFromNoisyCanvas2DAPI)):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm:
(TestWebKitAPI::TEST(SiteIsolation, AdvancedPrivacyProtectionsHideScreenMetricsFromBindings)):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/audio-fingerprinting.html:
Pull the JavaScript utility functions for computing web audio hashes out into a new file,
`audio-fingerprinting.js`, so that we can use it for another test suite.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/audio-fingerprinting.js: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/audio-fingerprinting.html.
(combineSamples):
(waitForAudioProcess):
(async testOscillatorCompressor):
(testOscillatorCompressorWorklet):
(async testOscillatorCompressorAnalyzer):
(async testLoopingOscillatorCompressorBiquadFilter.extractFingerprint):
(async testLoopingOscillatorCompressorBiquadFilter.getMean):
(async testLoopingOscillatorCompressorBiquadFilter.stabilize):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/canvas-fingerprinting.html:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/canvas-fingerprinting.js: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/canvas-fingerprinting.html.
Pull the JavaScript utility functions for computing web audio hashes out into a new file,
`canvas-fingerprinting.js`, so that we can use it for another test suite.
(async digestMessage):
(fullHorizontalLinearGradientCanvasImageData):
(fullVerticalLinearGradientCanvasImageData):
(fullRadialGradientCanvasImageData):
(webGLGradientCanvasDataURL):
(fullTextCanvasImageData):
(initialCanvasImageDataAsObject):
(isHorizontalLinearGradientCanvasGradient):
(isVerticalLinearGradientCanvasGradient):
(initialTextCanvasImageDataAsObject):
(initialHorizontalLinearGradientCanvasImageDataAsObject):
(initialVerticalLinearGradientCanvasImageDataAsObject):
(initialRadialGradientCanvasImageDataAsObject):
(async fullCanvasHash):
Canonical link: https://commits.webkit.org/283985@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list