Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c7b5fcf1c50e97c4206bc674c6efd8fbd52dcb4e
https://github.com/WebKit/WebKit/commit/c7b5fcf1c50e97c4206bc674c6efd8fbd52dcb4e
Author: Charlie Wolfe <[email protected]>
Date: 2026-07-23 (Thu, 23 Jul 2026)
Changed paths:
M LayoutTests/fast/dom/navigator-detached-no-crash-expected.txt
M LayoutTests/platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt
M
LayoutTests/platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt
M LayoutTests/platform/win/fast/dom/navigator-detached-no-crash-expected.txt
M LayoutTests/platform/wpe/fast/dom/navigator-detached-no-crash-expected.txt
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebCore/loader/DocumentLoader.cpp
M Source/WebCore/loader/DocumentLoader.h
M Source/WebCore/page/NavigatorGlobalPrivacyControl.cpp
M Source/WebCore/page/NavigatorGlobalPrivacyControl.idl
M Source/WebCore/page/Page.cpp
M Source/WebCore/page/Page.h
M Source/WebCore/workers/Worker.cpp
M Source/WebCore/workers/WorkerInitializationData.h
M Source/WebCore/workers/WorkerScriptLoader.cpp
M Source/WebCore/workers/WorkerScriptLoader.h
M Source/WebCore/workers/service/ServiceWorkerClientData.cpp
M Source/WebCore/workers/service/ServiceWorkerClientData.h
M Source/WebCore/workers/service/ServiceWorkerContextData.cpp
M Source/WebCore/workers/service/ServiceWorkerContextData.h
M Source/WebCore/workers/service/server/SWRegistrationDatabase.cpp
M Source/WebCore/workers/service/server/SWServer.cpp
M Source/WebCore/workers/service/server/SWServer.h
M Source/WebCore/workers/service/server/SWServerWorker.cpp
M Source/WebCore/workers/shared/SharedWorkerScriptLoader.cpp
M Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/Shared/WebsitePoliciesData.cpp
M Source/WebKit/UIProcess/API/C/WKWebsitePolicies.cpp
M Source/WebKit/UIProcess/API/C/WKWebsitePolicies.h
M Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
M Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp
M
Source/WebKit/WebProcess/Storage/WebSharedWorkerContextManagerConnection.cpp
M Tools/TestRunnerShared/TestFeatures.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebsitePolicies.mm
M Tools/WebKitTestRunner/TestController.cpp
M Tools/WebKitTestRunner/TestController.h
M Tools/WebKitTestRunner/TestInvocation.cpp
M Tools/WebKitTestRunner/TestOptions.cpp
M Tools/WebKitTestRunner/TestOptions.h
Log Message:
-----------
Expose navigator.globalPrivacyControl only when enabled through the
WKWebpagePreferences API
https://bugs.webkit.org/show_bug.cgi?id=319630
rdar://182454821
Reviewed by Matthew Finkel.
Consolidate GlobalPrivacyControl onto a single control surface. Previously it
could be toggled both
by the API and by the GlobalPrivacyControlEnabled preference.
The GlobalPrivacyControlEnabled preference is converted from a WKPreferences
knob into a
WebCore-only std::optional<bool> setting written only by the API path, and the
IDL attribute is
gated with [EnabledBySetting]. As a result navigator.globalPrivacyControl is
not surfaced unless the
embedder opts in, and is surfaced as true/false when it does.
Because the value is now a per-navigation API value rather than a globally
synced preference, it no
longer reaches service/shared worker contexts for free, so it is carried to
them via
ServiceWorkerContextData and WorkerInitializationData and applied in
Page::setupForRemoteWorker,
mirroring advancedPrivacyProtections.
WebKitTestRunner enables it via the website-policies API for tests served under
the
web-platform-tests gpc/ directory.
Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebsitePolicies.mm
* LayoutTests/fast/dom/navigator-detached-no-crash-expected.txt:
* LayoutTests/platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt:
*
LayoutTests/platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
* LayoutTests/platform/win/fast/dom/navigator-detached-no-crash-expected.txt:
* LayoutTests/platform/wpe/fast/dom/navigator-detached-no-crash-expected.txt:
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::applyPoliciesToSettings):
* Source/WebCore/loader/DocumentLoader.h:
(WebCore::DocumentLoader::setGlobalPrivacyControlEnabled):
(WebCore::DocumentLoader::globalPrivacyControlEnabled const):
* Source/WebCore/page/NavigatorGlobalPrivacyControl.cpp:
(WebCore::NavigatorGlobalPrivacyControl::globalPrivacyControlEnabled):
* Source/WebCore/page/NavigatorGlobalPrivacyControl.idl:
* Source/WebCore/page/Page.cpp:
(WebCore::Page::setupForRemoteWorker):
* Source/WebCore/page/Page.h:
* Source/WebCore/workers/WorkerInitializationData.h:
(WebCore::WorkerInitializationData::isolatedCopy const):
* Source/WebCore/workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadSynchronously):
(WebCore::WorkerScriptLoader::loadAsynchronously):
* Source/WebCore/workers/WorkerScriptLoader.h:
* Source/WebCore/workers/service/ServiceWorkerClientData.cpp:
(WebCore::ServiceWorkerClientData::isolatedCopy const):
(WebCore::ServiceWorkerClientData::isolatedCopy):
(WebCore::ServiceWorkerClientData::from):
* Source/WebCore/workers/service/ServiceWorkerClientData.h:
* Source/WebCore/workers/service/ServiceWorkerContextData.cpp:
(WebCore::ServiceWorkerContextData::isolatedCopy const):
(WebCore::ServiceWorkerContextData::isolatedCopy):
(WebCore::ServiceWorkerContextData::copy const):
* Source/WebCore/workers/service/ServiceWorkerContextData.h:
* Source/WebCore/workers/service/server/SWServer.cpp:
(WebCore::SWServer::globalPrivacyControlEnabledFromClient const):
(WebCore::SWServer::installContextData):
(WebCore::SWServer::runServiceWorker):
* Source/WebCore/workers/service/server/SWServer.h:
* Source/WebCore/workers/shared/SharedWorkerScriptLoader.cpp:
(WebCore::SharedWorkerScriptLoader::notifyFinished):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::applyToDocumentLoader):
* Source/WebKit/UIProcess/API/C/WKWebsitePolicies.cpp:
(WKWebsitePoliciesSetGlobalPrivacyControlEnabled):
(WKWebsitePoliciesGetGlobalPrivacyControlEnabled):
* Source/WebKit/UIProcess/API/C/WKWebsitePolicies.h:
* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::addParametersShared):
* Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::installServiceWorker):
* Source/WebKit/WebProcess/Storage/WebSharedWorkerContextManagerConnection.cpp:
(WebKit::WebSharedWorkerContextManagerConnection::launchSharedWorker):
* Tools/TestRunnerShared/TestFeatures.cpp:
(WTR::shouldEnableGlobalPrivacyControl):
(WTR::hardcodedFeaturesBasedOnPathForTest):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebsitePolicies.mm:
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::TestController::resetStateToConsistentValues):
* Tools/WebKitTestRunner/TestController.h:
(WTR::TestController::setGlobalPrivacyControl):
(WTR::TestController::globalPrivacyControl const):
* Tools/WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
* Tools/WebKitTestRunner/TestOptions.cpp:
(WTR::TestOptions::defaults):
* Tools/WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::globalPrivacyControl const):
Canonical link: https://commits.webkit.org/317802@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications