Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 9d9c4e42c34d0f8ae2db0bc6f2849371e101aa85
      
https://github.com/WebKit/WebKit/commit/9d9c4e42c34d0f8ae2db0bc6f2849371e101aa85
  Author: Ari Young <[email protected]>
  Date:   2026-07-02 (Thu, 02 Jul 2026)

  Changed paths:
    M 
Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerDelegatePrivate.h
    M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h
    M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPITabs.idl
    M Tools/TestWebKitAPI/Helpers/cocoa/TestWebExtensionsDelegate.h
    M Tools/TestWebKitAPI/Helpers/cocoa/TestWebExtensionsDelegate.mm
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPITabs.mm

  Log Message:
  -----------
  Support browser.tabs.move(...) WebExtension API
rdar://173603894
https://bugs.webkit.org/show_bug.cgi?id=318148

Reviewed by Timothy Hatcher.

This patch adds WebKit support for the `browser.tabs.move` WebExtension API. To 
that end, add
`webExtensionController:moveTabs:toIndex:inWindow:forExtensionContext:completionHandler:`
 delegate
method on WKWebExtensionControllerDelegate to perform the actual move. Tabs are 
moved in per-window
batches. Per the API's documentation, if a window is specified then all listed 
tabs are moved to
that window (in one delegate call). If no window is specified, tabs are moved 
to that index in the
window where they already are (one delegate call per window).

Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPITabs.mm

* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerDelegatePrivate.h:
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsMove):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
    Drive-by: Fix indentation
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm:
(WebKit::parseTabIdentifiers):
(WebKit::WebExtensionAPITabs::move):
(WebKit::WebExtensionAPITabs::remove):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h:
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPITabs.idl:
* Tools/TestWebKitAPI/Helpers/cocoa/TestWebExtensionsDelegate.h:
* Tools/TestWebKitAPI/Helpers/cocoa/TestWebExtensionsDelegate.mm:
(-[TestWebExtensionsDelegate 
_webExtensionController:moveTabs:toIndex:inWindow:forExtensionContext:completionHandler:]):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, MoveSingleTabInSingleWindow)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, MoveSingleTabToEndOfWindow)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, MoveOverflowIndexClampsToEnd)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, MoveToCurrentIndexReturnsTab)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, MoveMultipleTabsReturnsArray)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, 
MoveWithoutWindowIdGroupsTabsByWindow)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, MoveToAnotherWindow)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, MoveToOrFromPopupWindowFails)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, 
MoveBetweenPrivateAndNonPrivateFails)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, MoveDelegateErrorIsPropagated)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, 
MoveMultiWindowGroupErrorIsPropagated)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, MovePrivateTabsAllowed)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, MoveErrors)):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to