Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 97d426ec6562e61f2cac3aef1869f863ff18a0b3
https://github.com/WebKit/WebKit/commit/97d426ec6562e61f2cac3aef1869f863ff18a0b3
Author: Ari Young <[email protected]>
Date: 2026-08-24 (Mon, 24 Aug 2026)
Changed paths:
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Shared/Extensions/WebExtensionSidebarParameters.h
M
Source/WebKit/Shared/Extensions/WebExtensionSidebarParameters.serialization.in
M
Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerDelegatePrivate.h
M
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPISidebarCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
M
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPISidePanelCocoa.mm
M
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPISidebarActionCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPISidePanel.h
M
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPISidePanel.idl
M Tools/TestWebKitAPI/Helpers/cocoa/TestWebExtensionsDelegate.h
M Tools/TestWebKitAPI/Helpers/cocoa/TestWebExtensionsDelegate.mm
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPISidebar.mm
Log Message:
-----------
sidePanel API is missing features from newer Chrome versions
rdar://183166336
https://bugs.webkit.org/show_bug.cgi?id=322309
Reviewed by Brian Weinstein.
Add implementations for `close(...)` and `getLayout(...)` sidePanel API
methods. `getLayout()`
reports which side the panel is on through a new `WebExtensionSidebarSide` enum
and an optional
controller-delegate method. `close()` now backs both the argument-less
`sidebarAction.close()` and
the identifier-scoped `sidePanel.close()` over one `SidebarClose` message, so
the tab resolution and
option parsing shared with `open()` moved into helpers. This patch also adds
tests for these new
method, and factor shared code out of new/existing tests.
Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPISidebar.mm
* Source/WebKit/Scripts/webkit/messages.py:
(types_that_cannot_be_forward_declared):
WebExtensionSidebarSide must be listed here to prevent the generator from
forward-declaring it,
since it's an enum.
(headers_for_type):
Map WebExtensionSidebarSide to its header, since it's in
WebExtensionSidebarParameters.h rather
than a file with the same name as the type.
* Source/WebKit/Shared/Extensions/WebExtensionSidebarParameters.h:
*
Source/WebKit/Shared/Extensions/WebExtensionSidebarParameters.serialization.in:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerDelegatePrivate.h:
*
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPISidebarCocoa.mm:
(WebKit::getTabFromIdentifiers):
(WebKit::WebExtensionContext::sidebarOpen):
(WebKit::WebExtensionContext::sidebarClose):
(WebKit::WebExtensionContext::sidebarGetLayout):
(WebKit::WebExtensionContext::sidebarToggle):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
*
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPISidePanelCocoa.mm:
(WebKit::parseRequiredTabOrWindowIdentifiers):
(WebKit::WebExtensionAPISidePanel::open):
(WebKit::WebExtensionAPISidePanel::close):
(WebKit::WebExtensionAPISidePanel::getLayout):
*
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPISidebarActionCocoa.mm:
(WebKit::WebExtensionAPISidebarAction::close):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPISidePanel.h:
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPISidePanel.idl:
* Tools/TestWebKitAPI/Helpers/cocoa/TestWebExtensionsDelegate.h:
* Tools/TestWebKitAPI/Helpers/cocoa/TestWebExtensionsDelegate.mm:
(-[TestWebExtensionsDelegate
_webExtensionController:sidebarSideForExtensionContext:]):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPISidebar.mm:
(TestWebKitAPI::SidebarCallCounts::create):
(TestWebKitAPI::installSidebarCallCounters):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidebarActionOpenFailsWithoutUserGesture)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidebarActionCloseFailsWithoutUserGesture)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidebarActionToggleFailsWithoutUserGesture)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidebarActionToggleSucceedsWithUserGesture)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidePanelAPIAvailableWhenManifestRequests)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidePanelAPIDisallowsMissingArguments)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidePanelOpenForTabFailsWithoutUserGesture)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidePanelOpenForWindowFailsWithoutUserGesture)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidePanelCloseRequiresTabOrWindow)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidePanelCloseForTabClosesTabPanel)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidePanelCloseForWindowClosesGlobalPanel)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidePanelCloseForTabRejectsWhenOnlyGlobalOpen)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidePanelCloseIsNoOpWhenAlreadyClosed)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar,
SidePanelGetLayoutReturnsSide)):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::getTabFromIdentifiers const):
Canonical link: https://commits.webkit.org/319734@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications