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

  Changed paths:
    M Source/WebKit/Platform/cocoa/CocoaHelpers.h
    M Source/WebKit/Shared/Extensions/WebExtensionPermission.cpp
    M Source/WebKit/Shared/Extensions/WebExtensionPermission.h
    M Source/WebKit/Shared/Extensions/WebExtensionSidebarParameters.h
    M 
Source/WebKit/Shared/Extensions/WebExtensionSidebarParameters.serialization.in
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionSidebar.mm
    M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPISidebarCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionSidebarCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtension.cpp
    M Source/WebKit/UIProcess/Extensions/WebExtension.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionSidebar.h
    M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPISidePanelCocoa.mm
    M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPISidebarActionCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPISidebarAction.h
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPISidebar.mm

  Log Message:
  -----------
  Fix extension sidebar code
rdar://156534472
https://bugs.webkit.org/show_bug.cgi?id=296398

Reviewed by Timothy Hatcher.

This patch fixes a myriad of compiler errors which prevent Webkit from building 
with
ENABLE_WK_WEB_EXTENSIONS_SIDEBAR turned on. It also somewhat simplifies some of 
the parsing logic in
WebExtensionAPISidePanelCocoa.mm and WebExtensionAPISidebarActionCocoa.mm. Fix 
several places where
we were checking whether a weak pointer is nil and then using it without 
retaining a strong
reference between check and use. A manifest that configures no panel path no 
longer resolves to
about:blank and reports itself as openable, so an action click falls through 
instead of opening a
blank sidebar. Make getTitle() fall back to the extension name when no title is 
set.

* Source/WebKit/Platform/cocoa/CocoaHelpers.h:
(WebKit::toOptional): Add implementation of RefPtr<T> -> std::optional<Ref<T>>
* Source/WebKit/Shared/Extensions/WebExtensionPermission.cpp: Fix feature guard
* Source/WebKit/Shared/Extensions/WebExtensionPermission.h: Fix feature guard
* Source/WebKit/Shared/Extensions/WebExtensionSidebarParameters.h:
* 
Source/WebKit/Shared/Extensions/WebExtensionSidebarParameters.serialization.in:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionSidebar.mm:
(-[_WKWebExtensionSidebar webExtensionContext]):
(-[_WKWebExtensionSidebar title]): Convert String to NSString
(-[_WKWebExtensionSidebar iconForSize:]): Handle WebExtensionSidebar::icon 
returning an optional
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPISidebarCocoa.mm:
(WebKit::getSidebarWithIdentifiers): Null-check the tab's window before 
dereferencing it.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionSidebarCocoa.mm:
(-[_WKWebExtensionSidebarWebViewDelegate 
webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[_WKWebExtensionSidebarWebViewDelegate 
webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler:]):
(-[_WKWebExtensionSidebarViewController initWithWebExtensionSidebar:]): Convert 
String to NSString
(WebKit::getDefaultIconsDictFromExtension): Fix return type
(WebKit::WebExtensionSidebar::WebExtensionSidebar): Remove helper functions, 
directly get title and
document path since these are now returned as optionals.
(WebKit::WebExtensionSidebar::extensionContext const):
(WebKit::WebExtensionSidebar::tab const):
(WebKit::WebExtensionSidebar::window const):
(WebKit::WebExtensionSidebar::parent const):
(WebKit::WebExtensionSidebar::icon): Return optional<Ref> rather than nullable 
RefPtr, fix types
(WebKit::WebExtensionSidebar::setIconsDictionary): Take optional<Ref> rather 
than nullable RefPtr
(WebKit::WebExtensionSidebar::title const):
(WebKit::WebExtensionSidebar::setTitle): Remove helper function, directly get 
optional title
(WebKit::WebExtensionSidebar::resolvedSidebarPath const):
(WebKit::WebExtensionSidebar::sidebarPath const):
(WebKit::WebExtensionSidebar::setSidebarPath): Remove helper function, directly 
get optional path
(WebKit::WebExtensionSidebar::didReceiveUserInteraction):
(WebKit::WebExtensionSidebar::webView): Convert String to NSString for 
accessibility label
(WebKit::WebExtensionSidebar::notifyDelegateOfPropertyUpdate):
(WebKit::WebExtensionSidebar::reloadWebView): Convert URL to NSURL for 
loadRequest
(toOptionalRef): Deleted.
(WebKit::getDefaultSidebarTitleFromExtension): Deleted.
(WebKit::getDefaultSidebarPathFromExtension): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtension.cpp:
(WebKit::WebExtension::sidebarDocumentPath): Return optional<String> rather 
than nullable String
(WebKit::WebExtension::sidebarTitle): Return optional<String> rather than 
nullable String
(WebKit::WebExtension::populateSidebarPropertiesIfNeeded): Dereference 
sidebarActionObject and
sidePanelObject to pass reference directly
(WebKit::toOptionalString):
(WebKit::WebExtension::populateSidebarActionProperties): Use nullopt instead of 
null
(WebKit::WebExtension::populateSidePanelProperties): Use nullopt instead of null
* Source/WebKit/UIProcess/Extensions/WebExtension.h: Fix types, make many 
things optional
instead of nullable.
* Source/WebKit/UIProcess/Extensions/WebExtensionSidebar.h: Fix types, make 
many things optional
instead of nullable.
(WebKit::WebExtensionSidebar::opensSidebar):
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPISidePanelCocoa.mm:
(WebKit::parseTabIdentifier): Simplify parsing, remove SidebarError, use 
Expected<optional<...>, ...>
instead of Variant.
(WebKit::parseWindowIdentifier): Simplify parsing, remove SidebarError, use 
Expected<optional<...>, ...>
instead of Variant.
(WebKit::parseActionClickBehavior): Miscellaneous type fixes.
(WebKit::serializeSidebarParameters): Miscellaneous type fixes.
(WebKit::deserializeSidebarParameters): Miscellaneous type fixes.
(WebKit::WebExtensionAPISidePanel::getOptions): Convert String to NSString.
(WebKit::WebExtensionAPISidePanel::setOptions): Convert String to NSString.
(WebKit::WebExtensionAPISidePanel::getPanelBehavior): Convert String to 
NSString.
(WebKit::WebExtensionAPISidePanel::setPanelBehavior): Convert String to 
NSString.
(WebKit::WebExtensionAPISidePanel::open): Convert String to NSString, remove 
uses of toOptional.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPISidebarActionCocoa.mm:
(WebKit::parseSidebarActionDetails): Use Expected instead of Variant, 
miscellaneous fixes.
(WebKit::parseDetailsStringFromKey): Use Expected instead of Variant, 
miscellaneous fixes.
(WebKit::getIdentifiers): Take parameter which is an optional variant instead 
of just variant
(WebKit::WebExtensionAPISidebarAction::open): Convert String to NSString.
(WebKit::WebExtensionAPISidebarAction::close): Convert String to NSString.
(WebKit::WebExtensionAPISidebarAction::toggle): Convert String to NSString.
(WebKit::WebExtensionAPISidebarAction::isOpen): Convert String to NSString.
(WebKit::WebExtensionAPISidebarAction::getPanel): Convert String to NSString, 
use Expected instead
of Variant.
(WebKit::WebExtensionAPISidebarAction::setPanel): Convert String to NSString, 
use Expected instead
of Variant.
(WebKit::WebExtensionAPISidebarAction::getTitle): Convert String to NSString, 
use Expected instead
of Variant.
(WebKit::WebExtensionAPISidebarAction::setTitle): Convert String to NSString, 
use Expected instead
of Variant.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPISidebarAction.h:
(WebKit::indicatesError): Utility function which checks if an Expected contains 
an error, and
returns it as a RetainPtr<NSString> if so.
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPISidebar.mm:
(TestWebKitAPI::WKWebExtensionAPISidebar::WKWebExtensionAPISidebar): Fix 
`nonPersistant` typo.
(TestWebKitAPI::TEST_F(WKWebExtensionAPISidebar, 
SidePanelActionClickDoesNotOpenPathlessSidebar)):

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



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

Reply via email to