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

Reply via email to