[webkit-changes] [WebKit/WebKit] 0080cc: Hook up the WebProcess objects for Web Extensions ...

Timothy Hatcher noreply at github.com
Wed Nov 16 12:04:58 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0080cc8363bfda7701fe208f44a51c01385d4f44
      https://github.com/WebKit/WebKit/commit/0080cc8363bfda7701fe208f44a51c01385d4f44
  Author: Timothy Hatcher <timothy at apple.com>
  Date:   2022-11-16 (Wed, 16 Nov 2022)

  Changed paths:
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
    M Source/WebKit/Shared/WebExtensionContextParameters.h
    M Source/WebKit/Shared/WebExtensionContextParameters.serialization.in
    M Source/WebKit/Shared/WebExtensionControllerParameters.h
    M Source/WebKit/Shared/WebExtensionControllerParameters.serialization.in
    M Source/WebKit/UIProcess/AuxiliaryProcessProxy.h
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.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/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIObject.h
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h
    M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h
    M Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm
    A Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
    M Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.cpp
    M Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.h
    M Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.messages.in
    M Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
    M Source/WebKit/WebProcess/WebPage/WebFrame.cpp
    M Source/WebKit/WebProcess/WebPage/WebFrame.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h

  Log Message:
  -----------
  Hook up the WebProcess objects for Web Extensions and propogate some info over.
Inject the browser and chrome namespace objects into Web Extension JS contexts.
Implement the simple methods on browser.runtime and browser.extension that had FIXMEs.
https://bugs.webkit.org/show_bug.cgi?id=247964

Reviewed by Brian Weinstein.

* Source/WebKit/Scripts/webkit/messages.py:
(serialized_identifiers):
* Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
(IPC::serializedIdentifiers):
* Source/WebKit/Shared/WebExtensionContextParameters.h:
* Source/WebKit/Shared/WebExtensionContextParameters.serialization.in:
* Source/WebKit/Shared/WebExtensionControllerParameters.h:
* Source/WebKit/Shared/WebExtensionControllerParameters.serialization.in:
* Source/WebKit/UIProcess/AuxiliaryProcessProxy.h:
(WebKit::AuxiliaryProcessProxy::operator== const): Added for easy equality checks.
(WebKit::AuxiliaryProcessProxy::operator!= const): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::load):
(WebKit::WebExtensionController::unload):
(WebKit::WebExtensionController::addPage):
(WebKit::WebExtensionController::removePage):
* Source/WebKit/UIProcess/Extensions/WebExtension.h:
(WebKit::WebExtension::operator!= const): Changed style to match others.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::parameters const):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::operator== const): Added for easy equality checks.
(WebKit::WebExtensionContext::operator!= const): Ditto.
(WebKit::WebExtensionContext::baseURL const):
* Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp:
(WebKit::WebExtensionController::parameters const):
* Source/WebKit/UIProcess/Extensions/WebExtensionController.h:
(WebKit::WebExtensionController::operator== const): Added for easy equality checks.
(WebKit::WebExtensionController::operator!= const): Ditto.
* Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h:
(WebKit::WebExtensionMatchPattern::operator!= const):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp:
(WebKit::WebExtensionContextProxy::get):
(WebKit::WebExtensionContextProxy::getOrCreate):
(WebKit::WebExtensionContextProxy::WebExtensionContextProxy):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.cpp:
(WebKit::WebExtensionControllerProxy::get):
(WebKit::WebExtensionControllerProxy::getOrCreate):
(WebKit::WebExtensionControllerProxy::WebExtensionControllerProxy):
(WebKit::WebExtensionControllerProxy::load): Added.
(WebKit::WebExtensionControllerProxy::unload): Added.
(WebKit::WebExtensionControllerProxy::extensionContext const):
* Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.messages.in:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::load): Create the content script world.
(WebKit::WebExtensionContext::unload): Clear the content script world.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:
(WebKit::WebExtensionAPINamespace::extension):
(WebKit::WebExtensionAPINamespace::runtime):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIObject.h:
(WebKit::WebExtensionAPIObject::WebExtensionAPIObject):
(WebKit::WebExtensionAPIObject::extensionContext):
* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h:
(WebKit::WebExtensionCallbackHandler): Initialize m_callbackFunction and m_rejectFunction to nullptr.
(WebKit::toJSValue): Return JSValueMakeUndefined instead of nullptr for clarity.
* Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm:
(_generateHeaderFile): Added "#pragma once".
(_generateImplementationFile): Use #include instead of #import.
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm: Added.
(WebKit::WebExtensionControllerProxy::globalObjectIsAvailableForFrame): Do the injection for pages.
(WebKit::WebExtensionControllerProxy::serviceWorkerGlobalObjectIsAvailableForFrame): Do the inejction for service workers.
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.cpp:
(WebKit::WebExtensionControllerProxy::extensionContext const): Added various lookup methods.
* Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchGlobalObjectAvailable): Call webExtensionControllerProxy if it exists.
(WebKit::WebFrameLoaderClient::dispatchServiceWorkerGlobalObjectAvailable): Ditto.
* Source/WebKit/WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::jsContextForWorld): Added DOMWrapperWorld version.
(WebKit::WebFrame::jsContextForServiceWorkerWorld): Ditto.
* Source/WebKit/WebProcess/WebPage/WebFrame.h:
* Source/WebKit/WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::webExtensionControllerProxy const): Added.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm:
(WebKit::WebExtensionAPIExtension::isPropertyAllowed): Block getURL in v3 extensions.
(WebKit::WebExtensionAPIExtension::getURL): Added implementation.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionAPIRuntime::getURL): Added implementation.
(WebKit::WebExtensionAPIRuntime::getManifest): Ditto.
(WebKit::WebExtensionAPIRuntime::runtimeIdentifier): Ditto.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h: Fix return type for getManifest().

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




More information about the webkit-changes mailing list