Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 109d3f887b571085b14b333091e7283dacc7f8b1
https://github.com/WebKit/WebKit/commit/109d3f887b571085b14b333091e7283dacc7f8b1
Author: Timothy Hatcher <[email protected]>
Date: 2025-06-12 (Thu, 12 Jun 2025)
Changed paths:
M Source/WebCore/bindings/js/DOMWrapperWorld.h
M Source/WebCore/dom/Element.cpp
M Source/WebCore/dom/Element.h
M Source/WebCore/dom/Element.idl
M Source/WebCore/dom/Event.cpp
M Source/WebKit/CMakeLists.txt
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDOMCocoa.mm
M
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm
A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDOM.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h
M
Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm
A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDOM.idl
M
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M
Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm
M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp
M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.h
M Source/WebKit/WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp
M Source/WebKit/WebProcess/InjectedBundle/InjectedBundleScriptWorld.h
M Tools/TestWebKitAPI/SourcesCocoa.txt
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
A Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDOM.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITest.mm
Log Message:
-----------
Add support for dom.openOrClosedShadowRoot() and
element.openOrClosedShadowRoot.
https://webkit.org/b/294340
rdar://problem/153118095
Reviewed by Ryosuke Niwa.
Chrome supports `dom.openOrClosedShadowRoot()`, and Firefox supports
`element.openOrClosedShadowRoot`.
Both APIs allow the same access to closed shadow roots from the extension
content script world.
By adding a new `closedShadowRootIsExposedForExtensions` option on
`DOMWrapperWorld` for extension content
script worlds, we can support both APIs with minimal additional work. We want
to support both for broad
compatibility with existing extensions.
Added tests for both APIs.
This fixes the following WECG issue for Safari:
https://github.com/w3c/webextensions/issues/815
* Source/WebCore/bindings/js/DOMWrapperWorld.h:
(WebCore::DOMWrapperWorld::canAccessAnyShadowRoot const): Added.
(WebCore::DOMWrapperWorld::setClosedShadowRootIsExposedForExtensions): Added.
(WebCore::DOMWrapperWorld::closedShadowRootIsExposedForExtensions const): Added.
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::openOrClosedShadowRoot const): Added.
* Source/WebCore/dom/Element.h:
* Source/WebCore/dom/Element.idl:
* Source/WebCore/dom/Event.cpp:
(WebCore::Event::composedPath const): Use canAccessAnyShadowRoot().
* Source/WebKit/CMakeLists.txt: Added WebExtensionAPIDOM.
* Source/WebKit/DerivedSources-input.xcfilelist: Updated.
* Source/WebKit/DerivedSources-output.xcfilelist: Updated.
* Source/WebKit/DerivedSources.make: Added WebExtensionAPIDOM.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDOMCocoa.mm:
Copied from Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.h.
(WebKit::WebExtensionAPIDOM::openOrClosedShadowRoot):
*
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:
(WebKit::WebExtensionAPINamespace::dom):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDOM.h: Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h:
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm:
(WebKit::WebExtensionControllerProxy::globalObjectIsAvailableForFrame):
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDOM.idl: Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp:
(WebKit::WebExtensionContextProxy::setContentScriptWorld):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
*
Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:
(-[WKWebProcessPlugInScriptWorld exposeClosedShadowRootsForExtensions]): Added.
* Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp:
(WKBundleScriptWorldExposeClosedShadowRootsForExtensions): Added.
* Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.h:
* Source/WebKit/WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
(WebKit::InjectedBundleScriptWorld::exposeClosedShadowRootsForExtensions):
Added.
* Source/WebKit/WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:
* Tools/TestWebKitAPI/SourcesCocoa.txt: Added WKWebExtensionAPIDOM.mm.
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDOM.mm: Added.
(TestWebKitAPI::TEST(WKWebExtensionAPIDOM, OpenOrClosedShadowRoot)): Added.
(TestWebKitAPI::TEST(WKWebExtensionAPIDOM, OpenOrClosedShadowRootViaElement)):
Added.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITest.mm: Added missing
include.
Canonical link: https://commits.webkit.org/296168@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