Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a3e8427b4707498583267f2f0b9f42f82ec0f30a https://github.com/WebKit/WebKit/commit/a3e8427b4707498583267f2f0b9f42f82ec0f30a Author: Timothy Hatcher <timo...@apple.com> Date: 2024-02-09 (Fri, 09 Feb 2024)
Changed paths: M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPortCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in 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/WebExtensionContextProxy.h M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm Log Message: ----------- Messages sent to a Web Extension port should not be delivered to itself. https://webkit.org/b/269049 rdar://122583434 Reviewed by Brian Weinstein. Track the port's owning page proxy identifier, to identify the sending page, and then prevent ports from delivering a message to its own page. This was causing a loop because the ports array in the same extension web process had both the sender and receiver port. Also make sure the port's sender is null when it is the port returned by calling tabs.connect() or runtime.connect(). * Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPortCocoa.mm: (WebKit::WebExtensionContext::portPostMessage): (WebKit::WebExtensionContext::fireQueuedPortMessageEventsIfNeeded): (WebKit::WebExtensionContext::sendQueuedNativePortMessagesIfNeeded): * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm: (WebKit::WebExtensionMessagePort::sendMessage): * Source/WebKit/UIProcess/Extensions/WebExtensionContext.h: * Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in: * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm: (WebKit::WebExtensionAPIPort::postMessage): (WebKit::WebExtensionContextProxy::dispatchPortMessageEvent): (WebKit::WebExtensionContextProxy::dispatchPortDisconnectEvent): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm: (WebKit::WebExtensionAPIRuntime::sendMessage): (WebKit::WebExtensionAPIRuntime::connect): (WebKit::WebExtensionAPIRuntime::connectNative): (WebKit::WebExtensionContextProxy::internalDispatchRuntimeConnectEvent): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm: (WebKit::WebExtensionAPITabs::sendMessage): (WebKit::WebExtensionAPITabs::connect): * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h: (WebKit::WebExtensionAPIPort::owningPageProxyIdentifier const): Added. (WebKit::WebExtensionAPIPort::senderParameters const): Added. (WebKit::WebExtensionAPIPort::WebExtensionAPIPort): * Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h: * Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in: * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm: (TEST(WKWebExtensionAPIRuntime, ConnectFromPopup)): Added. * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm: (TestWebKitAPI::TEST): Added sender checks. Canonical link: https://commits.webkit.org/274403@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes