[webkit-changes] [WebKit/WebKit] cf1260: Add support for tabs.sendMessage to Web Extension ...

Timothy Hatcher noreply at github.com
Thu Sep 21 13:29:05 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cf1260f203c173044feb28d2f481501ac8d313ee
      https://github.com/WebKit/WebKit/commit/cf1260f203c173044feb28d2f481501ac8d313ee
  Author: Timothy Hatcher <timothy at apple.com>
  Date:   2023-09-21 (Thu, 21 Sep 2023)

  Changed paths:
    M Source/WebKit/DerivedSources-input.xcfilelist
    M Source/WebKit/DerivedSources.make
    M Source/WebKit/Platform/cocoa/CocoaHelpers.h
    M Source/WebKit/Platform/cocoa/CocoaHelpers.mm
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
    A Source/WebKit/Shared/Extensions/WebExtensionFrameIdentifier.h
    A Source/WebKit/Shared/Extensions/WebExtensionMessageSenderParameters.h
    A Source/WebKit/Shared/Extensions/WebExtensionMessageSenderParameters.serialization.in
    M Source/WebKit/Shared/Extensions/WebExtensionTabIdentifier.h
    M Source/WebKit/Shared/Extensions/WebExtensionUtilities.h
    M Source/WebKit/Shared/Extensions/WebExtensionUtilities.mm
    M Source/WebKit/Shared/Extensions/WebExtensionWindowIdentifier.h
    M Source/WebKit/Shared/Extensions/_WKWebExtensionLocalization.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
    M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h
    M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h
    M Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm
    M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
    M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIRuntime.idl
    M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPITabs.idl
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  -----------
  Add support for tabs.sendMessage to Web Extension content scripts.
https://webkit.org/b/261842
rdar://problem/115805311

Reviewed by Brian Weinstein.

* This adds support for browser.tabs.sendMessage, and browser.runtime.onMessage.
* Cleans up JSON parsing/encoding with some helper functions.
* Introduces WebExtensionFrameIdentifier with conversion to and from WebCore::FrameIdentifier.

* Source/WebKit/DerivedSources-input.xcfilelist: Added WebExtensionMessageSenderParameters.serialization.in.
* Source/WebKit/DerivedSources.make: Ditto.
* Source/WebKit/Platform/cocoa/CocoaHelpers.h:
* Source/WebKit/Platform/cocoa/CocoaHelpers.mm:
(WebKit::parseJSON): Added.
(WebKit::encodeJSONString): Added.
(WebKit::encodeJSONData): Added.
* Source/WebKit/Scripts/webkit/messages.py:
(serialized_identifiers): Added WebExtensionMessageSenderParameters.
* Source/WebKit/Shared/Extensions/WebExtensionFrameIdentifier.h: Added.
(WebKit::isMainFrame):
(WebKit::toWebCoreFrameIdentifier):
(WebKit::matchesFrame):
(WebKit::toWebExtensionFrameIdentifier):
(WebKit::toWebAPI):
* Source/WebKit/Shared/Extensions/WebExtensionMessageSenderParameters.h: Copied from Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIRuntime.idl.
* Source/WebKit/Shared/Extensions/WebExtensionMessageSenderParameters.serialization.in: Added.
* Source/WebKit/Shared/Extensions/WebExtensionTabIdentifier.h:
(WebKit::toWebAPI): Added const.
* Source/WebKit/Shared/Extensions/WebExtensionUtilities.h:
* Source/WebKit/Shared/Extensions/WebExtensionUtilities.mm:
(WebKit::toWebAPI): Added.
* Source/WebKit/Shared/Extensions/WebExtensionWindowIdentifier.h:
(WebKit::toWebAPI): Added const.
* Source/WebKit/Shared/Extensions/_WKWebExtensionLocalization.mm:
(-[_WKWebExtensionLocalization _localizationDictionaryForWebExtension:withLocale:]): Drive-by cleanup.
* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsSendMessage):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::WebExtension): Use JSON helper.
(WebKit::WebExtension::parseManifest): Ditto.
(WebKit::WebExtension::serializeManifest): Ditto.
(WebKit::WebExtension::serializeLocalization): Ditto.
(WebKit::WebExtension::resourceDataForPath): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::processes const): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::pageListensForEvent const): Added.
(WebKit::WebExtensionContext::processes const):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::sendToProcesses): Added.
(WebKit::WebExtensionContext::sendToProcessesForEvent): Use sendToProcesses().
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionAPIRuntime::onMessage): Added.
(WebKit::WebExtensionContextProxy::dispatchRuntimeMessageEvent): Added.
(WebKit::WebExtensionContextProxy::dispatchRuntimeContentScriptMessageEvent): Added.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm:
(WebKit::WebExtensionAPITabs::parseSendMessageOptions): Added.
(WebKit::WebExtensionAPITabs::sendMessage): Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h:
* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h:
(WebKit::toWebPage): Made a RefPtr to match toWebFrame.
* Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm:
(_generateImplementationFile): Added using WTF. Remove a const that was giving a build error.
(_returnExpression): Added .get() in a few places since a RefPtr is used now.
(_dynamicAttributesImplementation): Ditto.
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm:
(WebKit::webExtensionContextProxies): Moved here due to ARC issues with the JSON helpers.
(WebKit::WebExtensionContextProxy::get): Ditto.
(WebKit::WebExtensionContextProxy::WebExtensionContextProxy): Ditto.
(WebKit::WebExtensionContextProxy::~WebExtensionContextProxy): Ditto.
(WebKit::WebExtensionContextProxy::getOrCreate): Ditto.
(WebKit::WebExtensionContextProxy::parseLocalization): Ditto.
(WebKit::WebExtensionContextProxy::parseJSON): Deleted.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIRuntime.idl:
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPITabs.idl:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp:
(WebKit::WebExtensionContextProxy::enumerateFramesAndNamespaceObjects):
(WebKit::webExtensionContextProxies): Deleted. Moved to WebExtensionContextProxyCocoa.mm.
(WebKit::WebExtensionContextProxy::get): Deleted. Ditto.
(WebKit::WebExtensionContextProxy::getOrCreate): Deleted. Ditto.
(WebKit::WebExtensionContextProxy::WebExtensionContextProxy): Deleted. Ditto.
(WebKit::WebExtensionContextProxy::~WebExtensionContextProxy): Deleted. Ditto.
(WebKit::WebExtensionContextProxy::enumerateNamespaceObjects): Deleted.
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST): Added new tabs.sendMessage tests.

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




More information about the webkit-changes mailing list