[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