[webkit-changes] [WebKit/WebKit] 309fb6: Add support for web extension registered content s...
kiaraarose
noreply at github.com
Wed Nov 29 18:30:56 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 309fb63df40fb69a38444e281ab03d02073832c0
https://github.com/WebKit/WebKit/commit/309fb63df40fb69a38444e281ab03d02073832c0
Author: Kiara Rose <kiara_rose at apple.com>
Date: 2023-11-29 (Wed, 29 Nov 2023)
Changed paths:
M Source/WebKit/Shared/Extensions/WebExtensionDynamicScripts.serialization.in
M Source/WebKit/Shared/Extensions/WebExtensionRegisteredScriptParameters.h
M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtension.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
M Source/WebKit/UIProcess/Extensions/WebExtensionDynamicScripts.h
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIScriptingCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIScripting.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm
Log Message:
-----------
Add support for web extension registered content scripts
https://bugs.webkit.org/show_bug.cgi?id=261769
Reviewed by Timothy Hatcher.
This patch adds support for registered web extension content scripts with the scriptingAPI. To do this,
expand the WebExtensionDynamicScripts namespace to include a new WebExtensionRegisteredScript class
that will keep track of the scripts added with the API. This class will also keep track of the
user scripts and stylesheets added, and removes them when a script is either updated or unregistered.
To do: Allow the scripts to persist across browser sessions if 'persistAcrossSessions' is true.
In order to do this, we first need to add support for web extension storage, which is being tracked
in https://bugs.webkit.org/show_bug.cgi?id=264892.
* Source/WebKit/Shared/Extensions/WebExtensionDynamicScripts.serialization.in:
* Source/WebKit/Shared/Extensions/WebExtensionRegisteredScriptParameters.h:
(): Deleted.
* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm:
(WebKit::WebExtensionContext::scriptingRegisterScripts):
(WebKit::WebExtensionContext::scriptingUpdateRegisteredScripts):
(WebKit::WebExtensionContext::scriptingGetRegisteredScripts):
(WebKit::WebExtensionContext::scriptingUnregisterContentScripts):
(WebKit::WebExtensionContext::parseRegisteredContentScripts):
Validate scripts and create InjectedContentData for each one.
(WebKit::WebExtensionContext::scriptingUnregisterScripts): Deleted.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::populateContentScriptPropertiesIfNeeded):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::addInjectedContent):
Keep track of user scripts and style sheets for registered scripts.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm:
(WebKit::WebExtensionDynamicScripts::WebExtensionRegisteredScript::updateParameters):
(WebKit::WebExtensionDynamicScripts::WebExtensionRegisteredScript::merge):
Take the existing properties if they're not specified in the update parameters.
(WebKit::WebExtensionDynamicScripts::WebExtensionRegisteredScript::addUserScript):
(WebKit::WebExtensionDynamicScripts::WebExtensionRegisteredScript::addUserStyleSheet):
Keep track of user scripts and style sheets for registered scripts.
(WebKit::WebExtensionDynamicScripts::WebExtensionRegisteredScript::removeUserScriptsAndStyleSheets):
(WebKit::WebExtensionDynamicScripts::WebExtensionRegisteredScript::removeUserScripts):
(WebKit::WebExtensionDynamicScripts::WebExtensionRegisteredScript::removeUserStyleSheets):
Iterate through all user content controllers and remove all the user scripts and stylesheets for the
given script ID.
* Source/WebKit/UIProcess/Extensions/WebExtension.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/UIProcess/Extensions/WebExtensionDynamicScripts.h:
(WebKit::WebExtensionDynamicScripts::WebExtensionRegisteredScript::create):
(WebKit::WebExtensionDynamicScripts::WebExtensionRegisteredScript::WebExtensionRegisteredScript):
(WebKit::WebExtensionDynamicScripts::WebExtensionRegisteredScript::parameters const):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIScriptingCocoa.mm:
(WebKit::toWebAPI):
(WebKit::WebExtensionAPIScripting::registerContentScripts):
(WebKit::WebExtensionAPIScripting::getRegisteredContentScripts):
(WebKit::WebExtensionAPIScripting::updateContentScripts):
(WebKit::WebExtensionAPIScripting::unregisterContentScripts):
(WebKit::WebExtensionAPIScripting::validateRegisteredScripts):
Fix bug caused by how we check for the the injectionTime.
(WebKit::WebExtensionAPIScripting::parseRegisteredContentScripts):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIScripting.h:
Canonical link: https://commits.webkit.org/271318@main
More information about the webkit-changes
mailing list