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