[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