[webkit-changes] [WebKit/WebKit] 9ea15e: Add support for Web Extension native messaging via...

Timothy Hatcher noreply at github.com
Tue Sep 26 12:22:51 PDT 2023


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

  Changed paths:
    M Source/WebKit/Modules/OSX_Private.modulemap
    M Source/WebKit/Modules/iOS_Private.modulemap
    M Source/WebKit/Platform/cocoa/CocoaHelpers.h
    M Source/WebKit/Platform/cocoa/CocoaHelpers.mm
    M Source/WebKit/Shared/API/APIObject.h
    M Source/WebKit/Shared/Cocoa/APIObject.mm
    M Source/WebKit/Shared/Extensions/WebExtensionContentWorldType.h
    M Source/WebKit/Shared/Extensions/WebExtensionContentWorldType.serialization.in
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.mm
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePortInternal.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePortPrivate.h
    M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPortCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
    A Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
    A Source/WebKit/UIProcess/Extensions/WebExtensionMessagePort.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h
    M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIRuntime.idl
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm
    M Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.h
    M Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.mm

  Log Message:
  -----------
  Add support for Web Extension native messaging via delegate methods.
https://webkit.org/b/262082
rdar://problem/116022790

Reviewed by Brady Eidson.

Introduces two new _WKWebExtensionControllerDelegate methods for native messaging.
The first is for single message sending via runtime.sendNativeMessage(), and the other
is for persistent messaging vis runtime.connectNative(), which also introduces the
_WKWebExtensionMessagePort class for handling the port based messaging.

The ultimate plan is to have native messaging work by default internally via NSExtension,
which is tracked by https://webkit.org/b/262081. These delegate methods will still be
useful for testing or for clients that want alternative native messaging.

* Source/WebKit/Modules/OSX_Private.modulemap:
* Source/WebKit/Modules/iOS_Private.modulemap:
* Source/WebKit/Platform/cocoa/CocoaHelpers.h:
(WebKit::isValidJSONObject):
* Source/WebKit/Platform/cocoa/CocoaHelpers.mm:
(WebKit::isValidJSONObject):
(WebKit::encodeJSONData):
* Source/WebKit/Shared/API/APIObject.h:
* Source/WebKit/Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* Source/WebKit/Shared/Extensions/WebExtensionContentWorldType.h:
(WebKit::toDebugString):
* Source/WebKit/Shared/Extensions/WebExtensionContentWorldType.serialization.in:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.h: Added.
(NS_ERROR_ENUM):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.mm: Added.
(-[_WKWebExtensionMessagePort dealloc]):
(-[_WKWebExtensionMessagePort isEqual:]):
(-[_WKWebExtensionMessagePort applicationIdentifier]):
(-[_WKWebExtensionMessagePort isDisconnected]):
(-[_WKWebExtensionMessagePort sendMessage:completionHandler:]):
(-[_WKWebExtensionMessagePort disconnectWithError:]):
(-[_WKWebExtensionMessagePort _apiObject]):
(-[_WKWebExtensionMessagePort _webExtensionMessagePort]):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePortInternal.h: Added.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePortPrivate.h: Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm:
(WebKit::WebExtensionContext::permissionsRequest):
* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPortCocoa.mm:
(WebKit::WebExtensionContext::portPostMessage):
(WebKit::WebExtensionContext::portDisconnect):
(WebKit::WebExtensionContext::removePort):
(WebKit::WebExtensionContext::addNativePort):
(WebKit::WebExtensionContext::removeNativePort):
(WebKit::WebExtensionContext::fireQueuedPortMessageEventsIfNeeded):
(WebKit::WebExtensionContext::sendQueuedNativePortMessagesIfNeeded):
(WebKit::WebExtensionContext::firePortDisconnectEventIfNeeded):
(WebKit::WebExtensionContext::fireQueuedPortMessageEventIfNeeded): Deleted.
* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContext::runtimeConnect):
(WebKit::WebExtensionContext::runtimeSendNativeMessage):
(WebKit::WebExtensionContext::runtimeConnectNative):
* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsConnect):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm: Added.
(WebKit::toAPI):
(WebKit::toWebExtensionMessagePortError):
(WebKit::WebExtensionMessagePort::WebExtensionMessagePort):
(WebKit::WebExtensionMessagePort::operator== const):
(WebKit::WebExtensionMessagePort::extensionContext const):
(WebKit::WebExtensionMessagePort::isDisconnected const):
(WebKit::WebExtensionMessagePort::disconnect):
(WebKit::WebExtensionMessagePort::reportDisconnection):
(WebKit::WebExtensionMessagePort::remove):
(WebKit::WebExtensionMessagePort::sendMessage):
(WebKit::WebExtensionMessagePort::receiveMessage):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::create):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/UIProcess/Extensions/WebExtensionMessagePort.h: Added.
(WebKit::WebExtensionMessagePort::create):
(WebKit::WebExtensionMessagePort::~WebExtensionMessagePort):
(WebKit::WebExtensionMessagePort::applicationIdentifier const):
(WebKit::WebExtensionMessagePort::channelIdentifier const):
(WebKit::WebExtensionMessagePort::wrapper const):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm:
(WebKit::WebExtensionAPIPort::sender):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionAPIRuntime::isPropertyAllowed):
(WebKit::WebExtensionAPIRuntime::sendMessage):
(WebKit::WebExtensionAPIRuntime::sendNativeMessage):
(WebKit::WebExtensionAPIRuntime::connectNative):
(WebKit::WebExtensionContextProxy::dispatchRuntimeMessageEvent):
(WebKit::WebExtensionContextProxy::dispatchRuntimeConnectEvent):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm:
(WebKit::WebExtensionAPITabs::sendMessage):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h:
(WebKit::WebExtensionAPIPort::WebExtensionAPIPort):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h:
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIRuntime.idl:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.h:
* Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.mm:
(-[TestWebExtensionsDelegate webExtensionController:sendMessage:toApplicationIdentifier:forExtensionContext:replyHandler:]):
(-[TestWebExtensionsDelegate webExtensionController:connectUsingMessagePort:forExtensionContext:completionHandler:]):

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




More information about the webkit-changes mailing list