Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cf1260f203c173044feb28d2f481501ac8d313ee
      
https://github.com/WebKit/WebKit/commit/cf1260f203c173044feb28d2f481501ac8d313ee
  Author: Timothy Hatcher <[email protected]>
  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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to