[webkit-changes] [WebKit/WebKit] 5b5387: Support injected content in Web Extensions.

Timothy Hatcher noreply at github.com
Tue Nov 29 09:31:44 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5b5387abfac2be339ec93a67d9e8db023aa52b61
      https://github.com/WebKit/WebKit/commit/5b5387abfac2be339ec93a67d9e8db023aa52b61
  Author: Timothy Hatcher <timothy at apple.com>
  Date:   2022-11-29 (Tue, 29 Nov 2022)

  Changed paths:
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPrivate.h
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionURLSchemeHandlerCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtension.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp
    M Source/WebKit/UIProcess/Extensions/WebExtensionController.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h
    M Source/WebKit/UIProcess/UserContent/WebUserContentControllerProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm

  Log Message:
  -----------
  Support injected content in Web Extensions.
https://bugs.webkit.org/show_bug.cgi?id=246486

Reviewed by Brian Weinstein.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm:
(-[_WKWebExtension _hasStaticInjectedContentForURL:]): Renamed from hasInjectedContentForURL:.
(-[_WKWebExtension hasInjectedContentForURL:]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(-[_WKWebExtensionContext hasInjectedContentForURL:]): Added.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPrivate.h:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::removeError): Fix lambda capture to capture only this.
(WebKit::WebExtension::recordError): Ditto.
(WebKit::WebExtension::resourceStringForPath): Added. Helper for string resources.
(WebKit::WebExtension::resourceDataForPath): Don't replace cached strings.
(WebKit::WebExtension::staticInjectedContents): Renamed from injectedContents().
(WebKit::WebExtension::hasStaticInjectedContentForURL): Renamed from hasInjectedContentForURL().
(WebKit::WebExtension::populateContentScriptPropertiesIfNeeded): Use m_staticInjectedContents.
(WebKit::WebExtension::allRequestedMatchPatterns): Ditto.
(WebKit::WebExtension::injectedContents): Deleted.
(WebKit::WebExtension::hasInjectedContentForURL): Deleted.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::load): Call addInjectedContent(). Adjust FIXMEs.
(WebKit::WebExtensionContext::unload): Call removeInjectedContent(). Move nil setting to end.
(WebKit::WebExtensionContext::injectedContents): Added with FIXME for dynamic scripts.
(WebKit::WebExtensionContext::hasInjectedContentForURL): Added. This is better here than WebExtension
since dynamic scripts will make the answer wrong on WebExtension but correct here.
(WebKit::WebExtensionContext::postAsyncNotification): Fix lambda capture to fix crashes.
(WebKit::WebExtensionContext::grantPermissionMatchPatterns): Call addInjectedContent().
(WebKit::WebExtensionContext::denyPermissionMatchPatterns): Call updateInjectedContent().
(WebKit::WebExtensionContext::removeGrantedPermissionMatchPatterns): Call removeInjectedContent().
(WebKit::WebExtensionContext::removeDeniedPermissionMatchPatterns): Call updateInjectedContent().
(WebKit::WebExtensionContext::loadBackgroundWebView): Fix lambda capture to capture only this.
(WebKit::WebExtensionContext::addInjectedContent): Added.
(WebKit::toImpl): Added.
(WebKit::WebExtensionContext::removeInjectedContent): Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::load): Fix the loading order again to fix some ASSERTs.
(WebKit::WebExtensionController::addPage): Call new addProcessPool() and addUserContentController() helpers.
(WebKit::WebExtensionController::removePage): Call new removeProcessPool() and removeUserContentController() helpers.
(WebKit::WebExtensionController::addProcessPool): Added.
(WebKit::WebExtensionController::removeProcessPool): Added.
(WebKit::WebExtensionController::addUserContentController): Added.
(WebKit::WebExtensionController::removeUserContentController): Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm:
(WebKit::WebExtensionMatchPattern::patternsMatchAllHosts): Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionURLSchemeHandlerCocoa.mm:
(WebKit::WebExtensionURLSchemeHandler::platformStartTask): Fix lambda capture to capture only this and protect task.
* Source/WebKit/UIProcess/Extensions/WebExtension.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::parameters const): Remove PLATFORM(COCOA) ifdefs after review comments from Darin made me reconsider them.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::addInjectedContent): Added.
(WebKit::WebExtensionContext::updateInjectedContent): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp:
(WebKit::WebExtensionController::~WebExtensionController): Remove PLATFORM(COCOA) ifdefs after review comments from Darin made me reconsider them.
(WebKit::WebExtensionController::parameters const): Ditto.
(WebKit::WebExtensionController::allProcesses const): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionController.h:
(WebKit::WebExtensionController::allPages const): Added.
(WebKit::WebExtensionController::allUserContentControllers const): Added.
(WebKit::WebExtensionController::allProcessPools const): Added.
(WebKit::WebExtensionController::sendToAllProcesses): Use new allProcesses() method.
* Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h:
* Source/WebKit/UIProcess/UserContent/WebUserContentControllerProxy.h:
(WebKit::WebUserContentControllerProxy::operator== const): Added. Needed for WebExtensionController::removeUserContentController().
(WebKit::WebUserContentControllerProxy::operator!= const): Added.
* Source/WebKit/UIProcess/WebPageProxy.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm:
(TestWebKitAPI::TEST): Use renamed _hasStaticInjectedContentForURL: method.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm:
(TestWebKitAPI::TEST): Added WKWebExtensionController.ContentScriptLoading test.

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




More information about the webkit-changes mailing list