Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4164839ade95d9e06b82d50edb8adf491af98069
https://github.com/WebKit/WebKit/commit/4164839ade95d9e06b82d50edb8adf491af98069
Author: Charlie Wolfe <[email protected]>
Date: 2025-08-11 (Mon, 11 Aug 2025)
Changed paths:
A
LayoutTests/http/tests/permissions/resources/storage-access-permission-query-iframe.html
A
LayoutTests/http/tests/permissions/storage-access-permissions-query-expected.txt
A LayoutTests/http/tests/permissions/storage-access-permissions-query.html
M
LayoutTests/imported/w3c/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-fetch.sub.https.window-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/storage-access-api/storage-access-beyond-cookies.BlobURLDedicatedWorker.sub.https.tentative.window-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/storage-access-api/storage-access-beyond-cookies.BlobURLSharedWorker.sub.https.tentative.window-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/storage-access-api/storage-access-beyond-cookies.thirdPartyBlobStorage.sub.https.window-expected.txt
M Source/WebCore/Modules/permissions/MainThreadPermissionObserver.cpp
M Source/WebCore/Modules/permissions/MainThreadPermissionObserver.h
M Source/WebCore/Modules/permissions/PermissionController.h
M Source/WebCore/Modules/permissions/PermissionName.h
M Source/WebCore/Modules/permissions/PermissionName.idl
M Source/WebCore/Modules/permissions/PermissionObserver.h
M Source/WebCore/Modules/permissions/PermissionStatus.cpp
M Source/WebCore/Modules/permissions/Permissions.cpp
M Source/WebCore/html/PermissionsPolicy.cpp
M Source/WebCore/html/PermissionsPolicy.h
M Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp
M Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h
A
Source/WebKit/NetworkProcess/Classifier/StorageAccessPermissionChangeObserver.h
M Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp
M Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp
M Source/WebKit/WebProcess/Network/NetworkProcessConnection.h
M Source/WebKit/WebProcess/Network/NetworkProcessConnection.messages.in
M Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h
Log Message:
-----------
Implement Permissions API integration with the Storage Access API
https://bugs.webkit.org/show_bug.cgi?id=297181
rdar://147948198
Reviewed by BJ Burg.
This patch enables Permissions API query and onchange functionality to work
with the Storage Access API.
More details below.
This progresses the following WPT, but it cannot be tested in CI since we don't
have a local DNS resolver:
imported/w3c/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.html
https://privacycg.github.io/storage-access/#permissions-integration
*
LayoutTests/http/tests/permissions/resources/storage-access-permission-query-iframe.html:
Added.
*
LayoutTests/http/tests/permissions/storage-access-permissions-query-expected.txt:
Added.
* LayoutTests/http/tests/permissions/storage-access-permissions-query.html:
Added.
Add a layout test for coverage since the WPT will fail in CI.
*
LayoutTests/imported/w3c/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-fetch.sub.https.window-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/storage-access-api/storage-access-beyond-cookies.BlobURLDedicatedWorker.sub.https.tentative.window-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/storage-access-api/storage-access-beyond-cookies.BlobURLSharedWorker.sub.https.tentative.window-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/storage-access-api/storage-access-beyond-cookies.thirdPartyBlobStorage.sub.https.window-expected.txt:
* Source/WebCore/Modules/permissions/MainThreadPermissionObserver.cpp:
(WebCore::MainThreadPermissionObserver::addChangeListener):
(WebCore::MainThreadPermissionObserver::removeChangeListener):
* Source/WebCore/Modules/permissions/MainThreadPermissionObserver.h:
* Source/WebCore/Modules/permissions/PermissionController.h:
* Source/WebCore/Modules/permissions/PermissionObserver.h:
* Source/WebCore/Modules/permissions/PermissionStatus.cpp:
(WebCore::PermissionStatus::eventListenersDidChange):
Add or remove listeners from the network process when change event listeners
are modified.
* Source/WebCore/Modules/permissions/PermissionName.h:
* Source/WebCore/Modules/permissions/PermissionName.idl:
* Source/WebCore/Modules/permissions/Permissions.cpp:
(WebCore::isAllowedByPermissionsPolicy):
(WebCore::Permissions::toPermissionName):
* Source/WebCore/html/PermissionsPolicy.cpp:
(WebCore::toFeatureNameForLogging):
(WebCore::readFeatureIdentifier):
(WebCore::defaultAllowlistValue):
* Source/WebCore/html/PermissionsPolicy.h:
Add permissions policy support for storage-access permission.
* Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
(WebKit::ResourceLoadStatisticsStore::queryStorageAccessPermission):
* Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
*
Source/WebKit/NetworkProcess/Classifier/StorageAccessPermissionChangeObserver.h:
(WebKit::StorageAccessPermissionChangeObserver::~StorageAccessPermissionChangeObserver):
Add an observer to listen for storage access permission changes for a web
process, similar to
CookieChangeObserver.
* Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::queryStorageAccessPermission):
(WebKit::WebResourceLoadStatisticsStore::startListeningForStorageAccessPermissionChanges):
(WebKit::WebResourceLoadStatisticsStore::stopListeningForStorageAccessPermissionChanges):
Both stop listening functions are needed to remove listeners when the web
process terminates or when
change listeners are removed.
(WebKit::WebResourceLoadStatisticsStore::wasGrantedStorageAccessPermissionInPage):
* Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
Add a list to track observers for web processes listening to storage access
permission changes.
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess):
Remove the observer stored on WebResourceLoadStatisticsStore when a web process
terminates.
(WebKit::NetworkConnectionToWebProcess::subscribeToStorageAccessPermissionChanges):
(WebKit::NetworkConnectionToWebProcess::unsubscribeFromStorageAccessPermissionChanges):
(WebKit::NetworkConnectionToWebProcess::storageAccessPermissionChanged):
(WebKit::NetworkConnectionToWebProcess::queryStorageAccessPermission):
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::storageAccessPermissionChanged):
* Source/WebKit/WebProcess/Network/NetworkProcessConnection.h:
* Source/WebKit/WebProcess/Network/NetworkProcessConnection.messages.in:
* Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp:
(WebKit::WebPermissionController::query):
Storage access permissions are controlled by the network process, not the
client, so we need to add a new
IPC message to query permissions from the network process.
(WebKit::WebPermissionController::notifyObserversIfNeeded):
(WebKit::WebPermissionController::storageAccessPermissionChanged):
(WebKit::WebPermissionController::permissionChanged):
Storage access permissions are keyed by top-level site and subframe site, not
top-level origin. So I
added storageAccessPermissionChanged for storage access permission changes and
notifyObserversIfNeeded to
reduce code duplication.
(WebKit::WebPermissionController::addChangeListener):
(WebKit::WebPermissionController::removeChangeListener):
* Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h:
Notify the network process when change listeners are added or removed so it
only notifies web processes
of permission changes when listeners exist.
Canonical link: https://commits.webkit.org/298532@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes