Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b2fb1f240e251d103130fbba79ad202fbae0f6b4
      
https://github.com/WebKit/WebKit/commit/b2fb1f240e251d103130fbba79ad202fbae0f6b4
  Author: Charlie Wolfe <[email protected]>
  Date:   2026-10-07 (Wed, 07 Oct 2026)

  Changed paths:
    M 
LayoutTests/ipc/scheduleresourceload-resume-bind-to-claimant-message-check.html
    M Source/WebCore/Modules/cache/DOMCacheStorage.cpp
    M Source/WebCore/Modules/filesystem/FileSystemStorageConnection.cpp
    M Source/WebCore/Modules/indexeddb/IDBFactory.cpp
    M Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp
    M Source/WebCore/Modules/storage/StorageManager.cpp
    M Source/WebCore/Modules/web-locks/WebLockManager.cpp
    M Source/WebCore/dom/BroadcastChannel.cpp
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h
    M Source/WebCore/dom/ScriptExecutionContext.cpp
    M Source/WebCore/dom/ScriptExecutionContext.h
    M Source/WebCore/loader/DocumentLoader.cpp
    M Source/WebCore/storage/StorageNamespaceProvider.cpp
    M Source/WebCore/workers/WorkerGlobalScope.cpp
    M Source/WebCore/workers/WorkerGlobalScope.h
    M Source/WebCore/workers/WorkerMessagingProxy.cpp
    M Source/WebCore/workers/WorkerScriptLoader.cpp
    M Source/WebCore/workers/WorkerThread.cpp
    M Source/WebCore/workers/WorkerThread.h
    M Source/WebCore/workers/service/ServiceWorkerContainer.cpp
    M Source/WebCore/workers/shared/SharedWorker.cpp
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp
    M Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h
    M 
Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in
    M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
    M Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp
    M Source/WebKit/UIProcess/ValidationProcedures.h
    M Source/WebKit/UIProcess/WebLockRegistryProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebProcessProxy.cpp
    M Source/WebKit/UIProcess/WebProcessProxy.h
    M Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
    M 
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionUnpartitionedStorage.mm

  Log Message:
  -----------
  Give extension page subframes unpartitioned storage access
https://bugs.webkit.org/show_bug.cgi?id=326512
rdar://189301936

Reviewed by Sihui Liu.

Subframes of extension pages with unpartitioned storage access get first-party 
cookies, but other
storage APIs stayed partitioned. Add 
ScriptExecutionContext::storageTopOrigin(), which returns the
context's own origin when it has unpartitioned access, and use it for 
localStorage, sessionStorage,
IndexedDB, Cache Storage, OPFS, Web Locks, BroadcastChannel, StorageManager and 
service workers.
Blob URLs and the HTTP cache intentionally remain partitioned.

For subframe navigations, service worker matching uses the request's 
isTopSite() bit rather than
hasUnpartitionedStorageAccess, since the latter reflects the document being 
navigated away from.

Test: 
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionUnpartitionedStorage.mm

* 
LayoutTests/ipc/scheduleresourceload-resume-bind-to-claimant-message-check.html:
* Source/WebCore/Modules/cache/DOMCacheStorage.cpp:
(WebCore::DOMCacheStorage::origin const):
* Source/WebCore/Modules/filesystem/FileSystemStorageConnection.cpp:
(WebCore::clientOriginForContext):
* Source/WebCore/Modules/indexeddb/IDBFactory.cpp:
(WebCore::IDBFactory::openInternal):
(WebCore::IDBFactory::deleteDatabase):
* Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp:
(WebCore::IDBClient::IDBConnectionProxy::getAllDatabaseNamesAndVersions):
* Source/WebCore/Modules/storage/StorageManager.cpp:
(WebCore::connectionInfo):
* Source/WebCore/Modules/web-locks/WebLockManager.cpp:
(WebCore::clientOriginFromContext):
* Source/WebCore/dom/BroadcastChannel.cpp:
(WebCore::partitionedSecurityOriginFromContext):
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::updateServiceWorkerClientData):
* Source/WebCore/dom/Document.h:
(WebCore::Document::hasUnpartitionedStorageAccess const): Deleted.
* Source/WebCore/dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::storageClientOrigin const):
(WebCore::ScriptExecutionContext::canAccessResource const):
* Source/WebCore/dom/ScriptExecutionContext.h:
(WebCore::ScriptExecutionContext::hasUnpartitionedStorageAccess const):
(WebCore::ScriptExecutionContext::storageTopOrigin const):
* Source/WebCore/loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::matchRegistration):
* Source/WebCore/storage/StorageNamespaceProvider.cpp:
(WebCore::StorageNamespaceProvider::localStorageArea):
(WebCore::StorageNamespaceProvider::sessionStorageArea):
* Source/WebCore/workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::updateServiceWorkerClientData):
* Source/WebCore/workers/WorkerGlobalScope.h:
* Source/WebCore/workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
* Source/WebCore/workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadAsynchronously):
* Source/WebCore/workers/WorkerThread.cpp:
(WebCore::WorkerParameters::isolatedCopy const):
* Source/WebCore/workers/WorkerThread.h:
* Source/WebCore/workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::ready):
(WebCore::ServiceWorkerContainer::addRegistration):
(WebCore::ServiceWorkerContainer::updateRegistration):
(WebCore::ServiceWorkerContainer::getRegistration):
(WebCore::ServiceWorkerContainer::getRegistrations):
* Source/WebCore/workers/shared/SharedWorker.cpp:
(WebCore::SharedWorker::create):
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad):
* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::topOriginForServiceWorkers const):
* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h:
* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::continueWillSendRequest):
* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
* Source/WebKit/UIProcess/ValidationProcedures.h:
(WebKit::ProcessCommittedStorageClientOrigin::ProcessCommittedStorageClientOrigin):
(WebKit::ProcessCommittedStorageClientOrigin::checkUntrusted const):
* Source/WebKit/UIProcess/WebLockRegistryProxy.cpp:
(WebKit::WebLockRegistryProxy::requestLock):
(WebKit::WebLockRegistryProxy::releaseLock):
(WebKit::WebLockRegistryProxy::abortLockRequest):
(WebKit::WebLockRegistryProxy::snapshot):
(WebKit::WebLockRegistryProxy::clientIsGoingAway):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::hasCommittedStorageClientOrigin const):
(WebKit::WebProcessProxy::didCommitStorageClientOrigin):
* Source/WebKit/UIProcess/WebProcessProxy.h:
* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
* 
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionUnpartitionedStorage.mm:
(TestWebKitAPI::scriptReportingResult):
(TestWebKitAPI::storageTestServer):
(TestWebKitAPI::controllerConfigurationWithPersistentDataStore):
(TestWebKitAPI::loadStorageTestExtension):
(TestWebKitAPI::loadFirstPartyPage):
(TestWebKitAPI::runUnpartitionedStorageTest):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage, 
LocalStorageIsUnpartitionedInHostPermittedFrame)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage, 
IndexedDBIsUnpartitionedInHostPermittedFrame)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage, 
CacheStorageIsUnpartitionedInHostPermittedFrame)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage, 
FileSystemIsUnpartitionedInHostPermittedFrame)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage, 
WebLocksAreUnpartitionedInHostPermittedFrame)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage, 
DedicatedWorkerOfHostPermittedFrameIsUnpartitioned)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage, 
SharedWorkerOfHostPermittedFrameIsUnpartitioned)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage, 
ServiceWorkerControlsHostPermittedFrame)):
(TestWebKitAPI::copySessionStorage):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage, 
SessionStorageIsUnpartitionedInHostPermittedFrame)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage, 
BroadcastChannelIsUnpartitionedInHostPermittedFrame)):

Canonical link: https://commits.webkit.org/323034@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to