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

Reply via email to