Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a5114a1ab6dbe06a1b6fe53b9ff7fd43b69dba05
      
https://github.com/WebKit/WebKit/commit/a5114a1ab6dbe06a1b6fe53b9ff7fd43b69dba05
  Author: Kiara Rose <[email protected]>
  Date:   2026-08-11 (Tue, 11 Aug 2026)

  Changed paths:
    M Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h
    M 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in
    M Source/WebKit/Shared/Extensions/WebExtensionDataType.h
    M Source/WebKit/Shared/Extensions/WebExtensionStorageAccessLevel.h
    M Source/WebKit/UIProcess/Extensions/API/WebExtensionContextAPIStorage.cpp
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm
    M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIObject.h
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h
    M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
    M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIStorage.idl
    M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIStorageArea.idl
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPIDevTools.mm
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPIStorage.mm

  Log Message:
  -----------
  Extend setAccessLevel to local and sync storage areas
https://bugs.webkit.org/show_bug.cgi?id=320697
rdar://183680404

Reviewed by Timothy Hatcher.

This patch extends setAccessLevel to sync and local storage areas as it's 
documented on MDN.
This behavior now matches Chrome. Firefox doesn't have an implementation for 
setAccessLevel for any
storage area.

By default, session storage availability remains defaulted to trusted contexts. 
Local and sync
storage remain defaulted to trusted and untrusted contexts, but can now be 
limited to trusted contexts.

This patch also introduces a new isForTrustedContext() boolean used to 
determine if the storage APIs
should be exposed to devtools extension pages.

With these changes, the current WPT tests for the browser.storage API pass.

Tests: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPIDevTools.mm
       Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPIStorage.mm

* Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h:
* 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in:
* Source/WebKit/Shared/Extensions/WebExtensionDataType.h:
(WebKit::allWebExtensionDataTypes):
(WebKit::toWebExtensionDataType):
* Source/WebKit/Shared/Extensions/WebExtensionStorageAccessLevel.h:
(WebKit::defaultStorageAccessLevel):
(WebKit::storageAccessLevel):
(WebKit::isStorageTypeAllowedInUntrustedContexts):
(WebKit::toAPIString):
(WebKit::toWebExtensionStorageAccessLevel):
* Source/WebKit/UIProcess/Extensions/API/WebExtensionContextAPIStorage.cpp:
Only fire storage onChanged events to content scripts if the storage area is 
available in untrusted
contexts.

(WebKit::WebExtensionContext::storageSetAccessLevel):
(WebKit::WebExtensionContext::fireStorageChangedEventIfNeeded):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::load):
(WebKit::WebExtensionContext::invalidateStorage):
(WebKit::WebExtensionContext::loadStorageAccessLevelsFromStorage):
(WebKit::WebExtensionContext::saveStorageAccessLevelsToStorage):
(WebKit::WebExtensionContext::setStorageAccessLevel):
(WebKit::WebExtensionContext::setSessionStorageAllowedInContentScripts): 
Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::parameters const):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::storageAccessLevel const):
(WebKit::WebExtensionContext::isStorageAllowedInUntrustedContexts const):
(WebKit::WebExtensionContext::isSessionStorageAllowedInContentScripts const): 
Deleted.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm:
(WebKit::WebExtensionAPIStorageArea::isPropertyAllowed):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageCocoa.mm:
(WebKit::WebExtensionAPIStorage::isPropertyAllowed):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIObject.h:
(WebKit::WebExtensionAPIObject::isForTrustedContext const):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h:
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm:
(WebKit::WebExtensionContextProxy::getOrCreate):
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIStorage.idl:
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIStorageArea.idl:
Replace MainWorldOnly with an isForTrustedContext check so setAccessLevel is 
available for devtools
extension pages.

* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp:
(WebKit::WebExtensionContextProxy::setStorageAccessLevel):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPIDevTools.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIDevTools, StorageAccessLevel)):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPIStorage.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIStorage, UndefinedProperties)):
(TestWebKitAPI::TEST(WKWebExtensionAPIStorage, SetAccessLevelTrustedContexts)):
(TestWebKitAPI::TEST(WKWebExtensionAPIStorage, DefaultAccessLevels)):
(TestWebKitAPI::TEST(WKWebExtensionAPIStorage, 
MigratesLegacySessionStorageAllowedInUntrusedContextsState)):

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



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

Reply via email to