[webkit-changes] [WebKit/WebKit] d206d1: Add _WKWebExtensionAction API to support web exten...

Timothy Hatcher noreply at github.com
Fri Sep 29 16:52:18 PDT 2023


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

  Changed paths:
    M Source/WebKit/Modules/OSX_Private.modulemap
    M Source/WebKit/Modules/iOS_Private.modulemap
    M Source/WebKit/Shared/API/APIObject.h
    M Source/WebKit/Shared/Cocoa/APIObject.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionActionInternal.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionActionPrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h
    A Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtension.h
    A Source/WebKit/UIProcess/Extensions/WebExtensionAction.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Tools/TestWebKitAPI/SourcesCocoa.txt
    M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
    A Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewInspection.mm
    M Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.h
    M Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.mm
    M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h

  Log Message:
  -----------
  Add _WKWebExtensionAction API to support web extension actions.
https://bugs.webkit.org/show_bug.cgi?id=262388

Reviewed by Brady Eidson.

Added the initial support for action via _WKWebExtensionAction. This supports
popups and all the properties of action that are supported by Safari. Only
manifest dat is used currently, but support for per-tab action changes is
supported and will be followed up by the JS API in https://webkit.org/b/260154.

* Source/WebKit/Modules/OSX_Private.modulemap:
* Source/WebKit/Modules/iOS_Private.modulemap:
* Source/WebKit/Shared/API/APIObject.h:
* Source/WebKit/Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h: Added.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm: Added.
(-[_WKWebExtensionAction dealloc]):
(-[_WKWebExtensionAction isEqual:]):
(-[_WKWebExtensionAction webExtensionContext]):
(-[_WKWebExtensionAction associatedTab]):
(-[_WKWebExtensionAction iconForSize:]):
(-[_WKWebExtensionAction displayLabel]):
(-[_WKWebExtensionAction badgeText]):
(-[_WKWebExtensionAction isEnabled]):
(-[_WKWebExtensionAction hasPopup]):
(-[_WKWebExtensionAction popupWebView]):
(-[_WKWebExtensionAction closePopupWebView]):
(-[_WKWebExtensionAction _apiObject]):
(-[_WKWebExtensionAction _webExtensionAction]):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionActionInternal.h: Added.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionActionPrivate.h: Added.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(-[_WKWebExtensionContext hasPermission:inTab:]):
(-[_WKWebExtensionContext hasAccessToURL:inTab:]):
(-[_WKWebExtensionContext permissionStatusForPermission:inTab:]):
(-[_WKWebExtensionContext permissionStatusForURL:inTab:]):
(-[_WKWebExtensionContext permissionStatusForMatchPattern:inTab:]):
(-[_WKWebExtensionContext actionForTab:]):
(-[_WKWebExtensionContext performActionForTab:]):
(-[_WKWebExtensionContext userGesturePerformedInTab:]):
(-[_WKWebExtensionContext hasActiveUserGestureInTab:]):
(-[_WKWebExtensionContext clearUserGestureInTab:]):
(toImplNullable):
(-[_WKWebExtensionContext didActivateTab:previousActiveTab:]):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm: Added.
(-[_WKWebExtensionActionWebViewDelegate initWithWebExtensionAction:]):
(-[_WKWebExtensionActionWebViewDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[_WKWebExtensionActionWebViewDelegate webViewWebContentProcessDidTerminate:]):
(-[_WKWebExtensionActionWebViewDelegate webViewDidClose:]):
(-[_WKWebExtensionActionWebView initWithFrame:configuration:webExtensionAction:]):
(-[_WKWebExtensionActionWebView invalidateIntrinsicContentSize]):
(WebKit::WebExtensionAction::WebExtensionAction):
(WebKit::WebExtensionAction::operator== const):
(WebKit::WebExtensionAction::extensionContext const):
(WebKit::WebExtensionAction::propertiesDidChange):
(WebKit::WebExtensionAction::icon):
(WebKit::WebExtensionAction::setIconsDictionary):
(WebKit::WebExtensionAction::popupPath const):
(WebKit::WebExtensionAction::setPopupPath):
(WebKit::WebExtensionAction::popupWebView):
(WebKit::WebExtensionAction::presentPopupWhenReady):
(WebKit::WebExtensionAction::readyToPresentPopup):
(WebKit::WebExtensionAction::popupSizeDidChange):
(WebKit::WebExtensionAction::popupDidClose):
(WebKit::WebExtensionAction::closePopupWebView):
(WebKit::WebExtensionAction::displayLabel const):
(WebKit::WebExtensionAction::setDisplayLabel):
(WebKit::WebExtensionAction::badgeText const):
(WebKit::WebExtensionAction::setBadgeText):
(WebKit::WebExtensionAction::isEnabled const):
(WebKit::WebExtensionAction::setEnabled):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::resourceTypeForPath):
(WebKit::WebExtension::resourceDataForPath):
(WebKit::WebExtension::imageForPath):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::setInspectable):
(WebKit::WebExtensionContext::hasPermission):
(WebKit::WebExtensionContext::permissionState):
(WebKit::WebExtensionContext::defaultAction):
(WebKit::WebExtensionContext::getOrCreateAction):
(WebKit::WebExtensionContext::performAction):
(WebKit::WebExtensionContext::userGesturePerformed):
(WebKit::WebExtensionContext::hasActiveUserGesture const):
(WebKit::WebExtensionContext::clearUserGesture):
(WebKit::WebExtensionContext::relatedWebView):
(WebKit::WebExtensionContext::removeInjectedContent):
(WebKit::WebExtensionContext::cancelUserGesture): Deleted.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::extensionHasAccess const):
* Source/WebKit/UIProcess/Extensions/WebExtension.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionAction.h: Added.
(WebKit::WebExtensionAction::create):
(WebKit::WebExtensionAction::tab):
(WebKit::WebExtensionAction::hasPopup const):
(WebKit::WebExtensionAction::wrapper const):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::hasPermission):
(WebKit::WebExtensionContext::permissionState):
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm: Added.
(TestWebKitAPI::makePNGData):
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewInspection.mm:
* Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.h:
* Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.mm:
(-[TestWebExtensionsDelegate webExtensionController:presentActionPopup:forExtensionContext:completionHandler:]):
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h:

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




More information about the webkit-changes mailing list