[webkit-changes] [WebKit/WebKit] 2c6a9a: Add support for Web Extension browser.tabs events.

Timothy Hatcher noreply at github.com
Mon Sep 18 13:10:18 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2c6a9a12e9abd0dec08fc0dfaad2c27493b62b7a
      https://github.com/WebKit/WebKit/commit/2c6a9a12e9abd0dec08fc0dfaad2c27493b62b7a
  Author: Timothy Hatcher <timothy at apple.com>
  Date:   2023-09-18 (Mon, 18 Sep 2023)

  Changed paths:
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIAlarmsCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITestCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITest.h
    M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPITest.idl
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWindows.mm
    M Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.mm
    M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h
    M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  -----------
  Add support for Web Extension browser.tabs events.
https://webkit.org/b/261681
rdar://problem/115663241

Reviewed by Brian Weinstein.

* Implement all the tabs events that are supported by Safari.
* Internalize and share more of the windows and tabs test code in TestWebKitAPI so
  individual tests are simplier and don't need to repeat the same stuff.
* Flip the actual and expected arguments on test.assertEq and assertDeepEq to
  match the actual usage in the tests and make logging bad results make sense.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(-[_WKWebExtensionContext didActivateTab:previousActiveTab:]): Added previousActiveTab param.
(-[_WKWebExtensionContext didSelectTabs:]): Call renamed didSelectOrDeselectTabs method.
(-[_WKWebExtensionContext didDeselectTabs:]): Added. Call didSelectOrDeselectTabs method.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.mm:
(-[_WKWebExtensionController didActivateTab:previousActiveTab:]): Added previousActiveTab param.
(-[_WKWebExtensionController didDeselectTabs:]): Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIAlarmsCocoa.mm:
(WebKit::WebExtensionContext::fireAlarmsEventIfNeeded): Use constexpr.
* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::fireTabsCreatedEventIfNeeded): Added.
(WebKit::WebExtensionContext::fireTabsUpdatedEventIfNeeded): Added.
(WebKit::WebExtensionContext::fireTabsReplacedEventIfNeeded): Added.
(WebKit::WebExtensionContext::fireTabsDetachedEventIfNeeded): Added.
(WebKit::WebExtensionContext::fireTabsMovedEventIfNeeded): Added.
(WebKit::WebExtensionContext::fireTabsAttachedEventIfNeeded): Added.
(WebKit::WebExtensionContext::fireTabsActivatedEventIfNeeded): Added.
(WebKit::WebExtensionContext::fireTabsHighlightedEventIfNeeded): Added.
(WebKit::WebExtensionContext::fireTabsRemovedEventIfNeeded): Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::didOpenTab): Fire the event.
(WebKit::WebExtensionContext::didCloseTab): Fire the event.
(WebKit::WebExtensionContext::didActivateTab): Fire the event.
(WebKit::WebExtensionContext::didSelectOrDeselectTabs): Fire the event.
(WebKit::WebExtensionContext::didMoveTab): Fire the event.
(WebKit::WebExtensionContext::didReplaceTab): Fire the event.
(WebKit::WebExtensionContext::didChangeTabProperties): Fire the event.
(WebKit::WebExtensionContext::didSelectTabs): Deleted. Renamed to didSelectOrDeselectTabs.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::parameters const):
(WebKit::WebExtensionTab::changedParameters const): Added.
(WebKit::WebExtensionTab::window const):
(WebKit::WebExtensionTab::minimalParameters const): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm:
(WebKit::toWebAPI): Only incldue properties that have values so changedParameters only includes what changed.
(WebKit::WebExtensionContextProxy::dispatchTabsCreatedEvent): Added.
(WebKit::WebExtensionContextProxy::dispatchTabsUpdatedEvent): Added.
(WebKit::WebExtensionContextProxy::dispatchTabsReplacedEvent): Added.
(WebKit::WebExtensionContextProxy::dispatchTabsDetachedEvent): Added.
(WebKit::WebExtensionContextProxy::dispatchTabsMovedEvent): Added.
(WebKit::WebExtensionContextProxy::dispatchTabsAttachedEvent): Added.
(WebKit::WebExtensionContextProxy::dispatchTabsActivatedEvent): Added.
(WebKit::WebExtensionContextProxy::dispatchTabsHighlightedEvent): Added.
(WebKit::WebExtensionContextProxy::dispatchTabsRemovedEvent): Added.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITestCocoa.mm:
(WebKit::WebExtensionAPITest::assertDeepEq): Flipped arguments.
(WebKit::WebExtensionAPITest::assertEq): Flipped arguments.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm:
(WebKit::WebExtensionAPIWindows::parseWindowUpdateOptions): Added an exception for bad state.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITest.h: Flipped arguments.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPITest.idl: Flipped arguments.
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in: Added tab events.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST): Added new event tests and simplified existing tests.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWindows.mm:
(TestWebKitAPI::TEST): Simplified.
* Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.mm:
(-[TestWebExtensionsDelegate webExtensionController:openNewTabWithOptions:forExtensionContext:completionHandler:]):
Added default window opening logic.
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h:
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionManager initForExtension:]): Added default block implementations.
(-[TestWebExtensionManager openNewWindow]): Added.
(-[TestWebExtensionManager focusWindow:]): Added.
(-[TestWebExtensionManager closeWindow:]): Added.
(-[TestWebExtensionManager run]): Added whitespace.
(-[TestWebExtensionTab init]): Added to keep other tests working.
(-[TestWebExtensionTab initWithWindow:extensionController:]): Don't make web view is no extension controller,
this is needed for some tests still and it avoids an exception.
(-[TestWebExtensionTab toggleReaderModeForWebExtensionContext:completionHandler:]): Call didChangeTabProperties:.
(-[TestWebExtensionTab reloadForWebExtensionContext:completionHandler:]): Added default implementation.
(-[TestWebExtensionTab reloadFromOriginForWebExtensionContext:completionHandler:]): Added default implementation.
(-[TestWebExtensionTab goBackForWebExtensionContext:completionHandler:]): Added default implementation.
(-[TestWebExtensionTab goForwardForWebExtensionContext:completionHandler:]): Added default implementation.
(-[TestWebExtensionTab pinForWebExtensionContext:completionHandler:]): Call didChangeTabProperties:.
(-[TestWebExtensionTab unpinForWebExtensionContext:completionHandler:]): Call didChangeTabProperties:.
(-[TestWebExtensionTab muteForWebExtensionContext:completionHandler:]): Call didChangeTabProperties:.
(-[TestWebExtensionTab unmuteForWebExtensionContext:completionHandler:]): Call didChangeTabProperties:.
(-[TestWebExtensionTab activateForWebExtensionContext:completionHandler:]): Call didActivateTab:.
(-[TestWebExtensionTab selectForWebExtensionContext:completionHandler:]): Call didSelectTabs:.
(-[TestWebExtensionTab deselectForWebExtensionContext:completionHandler:]): Call didDeselectTabs:.
(-[TestWebExtensionWindow init]): Call initWithExtensionController:.
(-[TestWebExtensionWindow initWithExtensionController:]): Added.
(-[TestWebExtensionWindow openNewTab]): Added.
(-[TestWebExtensionWindow openNewTabAtIndex:]): Added.
(-[TestWebExtensionWindow closeTab:]): Added.
(-[TestWebExtensionWindow replaceTab:withTab:]): Added.
(-[TestWebExtensionWindow moveTab:toIndex:]): Added.

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




More information about the webkit-changes mailing list