[webkit-changes] [WebKit/WebKit] 19072c: Crash in WebKit::WebExtensionContext::permissionSt...

2024-05-31 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 19072c54e8faeac1d154463c5e9b10e7aa5749d1
  
https://github.com/WebKit/WebKit/commit/19072c54e8faeac1d154463c5e9b10e7aa5749d1
  Author: Timothy Hatcher 
  Date:   2024-05-31 (Fri, 31 May 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionDynamicScripts.h

  Log Message:
  ---
  Crash in WebKit::WebExtensionContext::permissionState.
https://webkit.org/b/274975
rdar://128446076

Reviewed by Brian Weinstein.

This crash could happen if the tab was dealloced while a script was being 
injected into it.
We were not retaining the tab while waiting for the frames for the web view.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm:
(WebKit::WebExtensionContext::scriptingExecuteScript): Pass a reference to tab.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsExecuteScript): Pass a reference to tab.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm:
(WebKit::WebExtensionDynamicScripts::executeScript): Make tab a reference since 
it is required
and use a Ref for the lambda capture.
* Source/WebKit/UIProcess/Extensions/WebExtensionDynamicScripts.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] d0a686: Fire open and closed events when a tab is replaced.

2024-05-29 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d0a6863b9a013dedac63c644883b0736f5d5dd63
  
https://github.com/WebKit/WebKit/commit/d0a6863b9a013dedac63c644883b0736f5d5dd63
  Author: Timothy Hatcher 
  Date:   2024-05-29 (Wed, 29 May 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.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/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  Fire open and closed events when a tab is replaced.
https://webkit.org/b/274794
rdar://123344546

Reviewed by Brian Weinstein.

Fire the onCreated and onRemoved events when tabs are replaced. Also return 
errors
where an extension messages a tab that does not exist to prevent more confusing 
errors
later when tab properties are missing, etc. Also make sure to always include 
the windowId
and index properties on the tab object, even if they are -1 and NaN.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContext::runtimeSendMessage): Added error if tab is not 
found.
(WebKit::WebExtensionContext::runtimeConnect): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::didCloseTab): Call forgetTab if the tab is 
already closed.
(WebKit::WebExtensionContext::didReplaceTab): Fire open and closed events.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::parameters const): Always include window and index.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm:
(WebKit::toWebAPI): Use toWebAPI for the index of notFound is returned as NaN.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, ReplacedEvent)): Added.
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionWindow replaceTab:withTab:]): Swap activeTab if it was 
active.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] f4d3ac: Content Script CSS overriding style attributes inc...

2024-05-05 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f4d3ac245e7d24d2d7702b884c10f29527be307a
  
https://github.com/WebKit/WebKit/commit/f4d3ac245e7d24d2d7702b884c10f29527be307a
  Author: Timothy Hatcher 
  Date:   2024-05-05 (Sun, 05 May 2024)

  Changed paths:
M Source/WebCore/en.lproj/Localizable.strings
M 
Source/WebKit/Shared/Extensions/WebExtensionDynamicScripts.serialization.in
M Source/WebKit/Shared/Extensions/WebExtensionRegisteredScriptParameters.h
M Source/WebKit/Shared/Extensions/WebExtensionScriptInjectionParameters.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtension.h
M Source/WebKit/UIProcess/Extensions/WebExtensionDynamicScripts.h
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIScriptingCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionContext.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm

  Log Message:
  ---
  Content Script CSS overriding style attributes inconsistent.
https://webkit.org/b/273122
rdar://problem/126916972

Reviewed by Antti Koivisto.

Change web extension content styles to be author level instead of user level by 
default.

To allow extensions to still use user level, added support for `cssOrigin` in 
the
`tabs.insertCSS()` options, as well as `origin` in the `scripting.insertCSS` 
options.
Accepted values are `user` and `author`.

In addition, this introduces `cssOrigin` in 
`scripting.registerContentScripts()` and
`css_origin` for the `content_scripts` entry in the manifest. These are new 
options
and are being discussed in the WECG at 
https://github.com/w3c/webextensions/issues/414.

* Source/WebCore/en.lproj/Localizable.strings: Updated.
* Source/WebKit/Shared/Extensions/WebExtensionDynamicScripts.serialization.in:
* Source/WebKit/Shared/Extensions/WebExtensionRegisteredScriptParameters.h:
* Source/WebKit/Shared/Extensions/WebExtensionScriptInjectionParameters.h:
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm:
(WebKit::WebExtensionContext::scriptingInsertCSS):
(WebKit::WebExtensionContext::createInjectedContentForScripts):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsInsertCSS):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::populateContentScriptPropertiesIfNeeded):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::addInjectedContent):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm:
(WebKit::WebExtensionDynamicScripts::injectStyleSheets):
* Source/WebKit/UIProcess/Extensions/WebExtension.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionDynamicScripts.h:
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIScriptingCocoa.mm:
(WebKit::toWebAPI): Added origin.
(WebKit::WebExtensionAPIScripting::executeScript): Return early if 
outExceptionString is set.
(WebKit::WebExtensionAPIScripting::insertCSS): Ditto.
(WebKit::WebExtensionAPIScripting::removeCSS): Ditto.
(WebKit::WebExtensionAPIScripting::validateCSS): Added origin.
(WebKit::WebExtensionAPIScripting::validateRegisteredScripts): Ditto.
(WebKit::WebExtensionAPIScripting::parseCSSInjectionOptions): Ditto.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm:
(WebKit::WebExtensionAPITabs::parseScriptOptions):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm:
(TestWebKitAPI::TEST(WKWebExtension, ContentScriptsParsing)): Added new cases.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIScripting, ErrorsCSS)): Added new error 
case.
(TestWebKitAPI::TEST(WKWebExtensionAPIScripting, 
ErrorsRegisteredContentScript)): Ditto.
(TestWebKitAPI::TEST(WKWebExtensionAPIScripting, CSSUserOrigin)): Added.
(TestWebKitAPI::TEST(WKWebExtensionAPIScripting, CSSAuthorOrigin)): Added.
(TestWebKitAPI::TEST(WKWebExtensionAPIScripting, World)): Fixed test that was 
always passing.
(TestWebKitAPI::TEST(WKWebExtensionAPIScripting, 
RegisterContentScriptsWithCSSUserOrigin)): Added.
(TestWebKitAPI::TEST(WKWebExtensionAPIScripting, 
RegisterContentScriptsWithCSSAuthorOrigin)): Added.
* Tools/TestWebKitAPI

[webkit-changes] [WebKit/WebKit] 75ca80: REGRESSION (273393@main): Elevated CPU use in UIPr...

2024-05-01 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 75ca8019625a49f6806846f69f7c6e028dfef6e4
  
https://github.com/WebKit/WebKit/commit/75ca8019625a49f6806846f69f7c6e028dfef6e4
  Author: Timothy Hatcher 
  Date:   2024-05-01 (Wed, 01 May 2024)

  Changed paths:
M Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp
M Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h
M 
Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in
M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
M Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.h
M Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp

  Log Message:
  ---
  REGRESSION (273393@main): Elevated CPU use in UIProcess and NetworkProcess 
due to always sending resource load messages to UIProcess.
https://webkit.org/b/273582
rdar://127380142

Reviewed by Brian Weinstein.

Only send the resource messages if the page has loaded extensions, not just an 
extension controller.
The NetworkResourceLoadParameters are sent over for each scheduled load, so it 
is always accurate.
Renamed the struct field from pageHasExtensionController to 
pageHasLoadedWebExtensions.

* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::NetworkResourceLoadParameters):
* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h:
* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::shouldSendResourceLoadMessages const):
* Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.h:
* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::addParametersShared):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 484a4f: Safari crashes at WebKit::WebExtensionContext::ope...

2024-05-01 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 484a4fe7b14f08bae1bdccd3e68309bc1ec1ef38
  
https://github.com/WebKit/WebKit/commit/484a4fe7b14f08bae1bdccd3e68309bc1ec1ef38
  Author: Timothy Hatcher 
  Date:   2024-05-01 (Wed, 01 May 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h

  Log Message:
  ---
  Safari crashes at WebKit::WebExtensionContext::openInspectors.
https://webkit.org/b/273560
rdar://127189700

Reviewed by Brian Weinstein.

Add a null check for _WKInspector befor tryign to get API::Inspector from it.

Also moved extensionHasAccess() check to openWindows() and openTabs(), so the
caller does not need to do it. A extensionHasAccess() check was missing in
the openInspectors() loop of openTabs().

Also skip extra work with early returns for !hasInspectorBackgroundPage().

Finally, adopt WTF::compactMap and WTF::map() more.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(-[_WKWebExtensionContext openWindows]): Pass IgnoreExtensionAccess::Yes since 
API should see all.
(-[_WKWebExtensionContext openTabs]): Ditto.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm:
(WebKit::WebExtensionContext::cookiesGetAllCookieStores):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::openWindows const):
(WebKit::WebExtensionContext::openTabs const):
(WebKit::WebExtensionContext::openInspectors const):
(WebKit::WebExtensionContext::loadedInspectors const):
(WebKit::WebExtensionContext::inspectorExtension const):
(WebKit::WebExtensionContext::inspector const):
(WebKit::WebExtensionContext::processes const):
(WebKit::WebExtensionContext::isInspectorBackgroundPage const):
(WebKit::WebExtensionContext::isDevToolsMessageAllowed): Removed #ifdef since 
this method
is already guarded by it.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 3b5714: Content Scripts running in subframe without mainfr...

2024-04-26 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3b5714016d2450752f2d89e2068d44bcbae9945c
  
https://github.com/WebKit/WebKit/commit/3b5714016d2450752f2d89e2068d44bcbae9945c
  Author: Timothy Hatcher 
  Date:   2024-04-26 (Fri, 26 Apr 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIStorageCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIStorage.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  ---
  Content Scripts running in subframe without mainframe permission fail to work 
properly.
https://webkit.org/b/270218
rdar://problem/123750228

Reviewed by Brian Weinstein.

Allow sending a message to a tab even if the extension does not have 
permissions for
the main frame. The other browsers don't reject with an error in this case, the 
message
is just dropped on the floor later on in processes() when the listeners are 
checked.

Also allows subframes with content scripts to access storage if the main frame 
does not
have host permission. This was being blocked by a permission check, but that 
required main
frame host permissions. This is already covered in a permissive way for frames 
by the
isStorageMessageAllowed() check that happens when a storage IPC message is 
received.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIStorageCocoa.mm:
(WebKit::WebExtensionContext::storageGet): Removed extensionCanAccessWebPage() 
call.
(WebKit::WebExtensionContext::storageGetBytesInUse): Ditto.
(WebKit::WebExtensionContext::storageSet): Ditto.
(WebKit::WebExtensionContext::storageRemove): Ditto.
(WebKit::WebExtensionContext::storageClear): Ditto.
(WebKit::WebExtensionContext::storageSetAccessLevel): Ditto.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsSendMessage): Removed permission check / 
error.
(WebKit::WebExtensionContext::tabsConnect): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::extensionCanAccessWebPage): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIRuntime, SendMessageFromSubframe)): Added.
(TestWebKitAPI::TEST(WKWebExtensionAPIRuntime, ConnectFromSubframe)): Added.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIStorage.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIStorage, StorageFromSubframe)): Added.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, 
SendMessageFromBackgroundToSubframe)): Added.
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, ConnectToSubframe)): Added.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 10d192: Add support for loading the background content for...

2024-04-25 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 10d19200a9d72b72e9d2a0a149dc35da825df3aa
  
https://github.com/WebKit/WebKit/commit/10d19200a9d72b72e9d2a0a149dc35da825df3aa
  Author: Timothy Hatcher 
  Date:   2024-04-25 (Thu, 25 Apr 2024)

  Changed paths:
M Source/WebCore/en.lproj/Localizable.strings
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtension.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h

  Log Message:
  ---
  Add support for loading the background content for a _WKWebExtensionContext.
https://webkit.org/b/273269
rdar://126994428

Reviewed by Brian Weinstein.

Added a loadBackgroundContentWithCompletionHandler: method, and changed how the 
background
load errors are created. This is a step in the direction of having 
WebExtensionContext
track runtime errors separate from WebExtension (see bug 270580).

* Source/WebCore/en.lproj/Localizable.strings: Updated with 
update-webkit-localizable-strings.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h:
(NS_ERROR_ENUM): Removed _WKWebExtensionErrorBackgroundContentFailedToLoad.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h:
(NS_ERROR_ENUM): Added _WKWebExtensionContextErrorNoBackgroundContent and
_WKWebExtensionContextErrorBackgroundContentFailedToLoad.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(-[_WKWebExtensionContext loadBackgroundContentWithCompletionHandler:]): Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::toAPI): Removed BackgroundContentFailedToLoad.
(WebKit::WebExtension::createError): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::toAPI): Added new error codes.
(WebKit::WebExtensionContext::createError): Ditto.
(WebKit::WebExtensionContext::loadBackgroundContent): Added.
(WebKit::WebExtensionContext::loadBackgroundWebView): Set 
m_backgroundContentLoadError
instead of recording it on the WebExtension.
(WebKit::WebExtensionContext::didFailNavigation): Ditto.
* Source/WebKit/UIProcess/Extensions/WebExtension.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::backgroundContentLoadError const): Added.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] da4ea5: Web Extension popup is slow and jittery when prese...

2024-04-22 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: da4ea518b228c320fb16ae92d065a990ff3dab17
  
https://github.com/WebKit/WebKit/commit/da4ea518b228c320fb16ae92d065a990ff3dab17
  Author: Timothy Hatcher 
  Date:   2024-04-22 (Mon, 22 Apr 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionAction.h

  Log Message:
  ---
  Web Extension popup is slow and jittery when presenting.
https://webkit.org/b/273079
rdar://126646845

Reviewed by Brian Weinstein.

Fixes a few issues where popups were not presenting fast and jittering when 
animating open.
* Add the web view temporarily to a window to force it to layout. This was the 
primary issue,
  since WebKit was not laying-out various extension popups before it was added 
to a window.
* Stop updating the popover size when the size hasn't changed above the minimum.
* Reduced the timeout to 250ms in Release builds (and triple in Debug). All 
popups now
  display in less than 100ms on an M3 MacBook Pro. This can be reduced because 
the timeout
  starts after the document load, not prior to the load like it did before 
275454@main.
* Prevent the delegate method from being called when just accessing the 
popupWebView property
  on the action. It should only be called when the performActionForTab: method 
is called.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(-[_WKWebExtensionActionWebView contentSize]): Renamed from _contentSize to be 
public.
(-[_WKWebExtensionActionWebView _contentSizeDidChange]): Only call 
popupSizeDidChange
when the size is above the minimum.
(-[_WKWebExtensionActionWebView _contentSizeHasStabilized]): Renamed from
_checkIfContentSizeStabilizedAndPresentPopup to be clearer.
(-[_WKWebExtensionActionPopover initWithWebExtensionAction:]):
(WebKit::WebExtensionAction::WebExtensionAction):
(WebKit::WebExtensionAction::popupWebView): Remove unused LoadOnFirstAccess 
parameter.
(WebKit::WebExtensionAction::presentPopupWhenReady):
(WebKit::WebExtensionAction::popupDidFinishDocumentLoad):
(WebKit::WebExtensionAction::readyToPresentPopup):
(WebKit::WebExtensionAction::popupSizeDidChange): Moved readyToPresentPopup() 
call here.
(WebKit::WebExtensionAction::closePopup):
(-[_WKWebExtensionActionWebView _contentSize]): Deleted.
(-[_WKWebExtensionActionWebView _checkIfContentSizeStabilizedAndPresentPopup]): 
Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionAction.h:
(WebKit::WebExtensionAction::shouldPresentPopupWhenReady const):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 8e0154: REGRESSION(264584@main): Web Extension debug loggi...

2024-04-18 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8e01542d58ad3d5c7370245d7cd460066215c3d1
  
https://github.com/WebKit/WebKit/commit/8e01542d58ad3d5c7370245d7cd460066215c3d1
  Author: Timothy Hatcher 
  Date:   2024-04-18 (Thu, 18 Apr 2024)

  Changed paths:
M Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

  Log Message:
  ---
  REGRESSION(264584@main): Web Extension debug logging is not being logged.
https://webkit.org/b/272918
rdar://problem/126708221

Reviewed by Per Arne Vollan.

os_log_set_hook takes a minimum log type, so set this to OS_LOG_TYPE_DEBUG for
debug builds. Also only return early for debug and info types in release builds.

This makes sure debug builds get all log message types. While release builds 
stay
mostly the same as before. However, info logs are now also filtered out, which 
was
the expected behavior before, but info logs were still getting sent.

* Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::registerLogHook):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 63355e: declarativeNetRequest redirect and modifyHeaders r...

2024-04-18 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 63355e0745267f9891ebe07dc1f3aa96e59eb707
  
https://github.com/WebKit/WebKit/commit/63355e0745267f9891ebe07dc1f3aa96e59eb707
  Author: Timothy Hatcher 
  Date:   2024-04-18 (Thu, 18 Apr 2024)

  Changed paths:
M Source/WebKit/UIProcess/Cocoa/NavigationState.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionController.h
M 
Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDeclarativeNetRequest.mm

  Log Message:
  ---
  declarativeNetRequest redirect and modifyHeaders rules don't work.
https://webkit.org/b/272763
rdar://problem/126562335

Reviewed by Brian Weinstein.

We were not setting activeContentRuleListActionPatterns() for the network 
process to check if the extension
had permissions to modify the requests, since the rules require 
declarativeNetRequestWithHostAccess and
granted host permission patterns.

* Source/WebKit/UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction): 
Added call to extension controller.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::resourceDataForPath): Add support for any JSON.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::updateWebsitePoliciesForNavigation): Added. 
Set activeContentRuleListActionPatterns
for each extension context that has declarativeNetRequestWithHostAccess 
permissions.
* Source/WebKit/UIProcess/Extensions/WebExtensionController.h:
* 
Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDeclarativeNetRequest.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIDeclarativeNetRequest, 
DISABLED_RedirectRule)): Added. Blocked on fixing
rdar://116459903 (Web Process is crashing when using declarativeNetRequest to 
redirect a page).
(TestWebKitAPI::TEST(WKWebExtensionAPIDeclarativeNetRequest, 
RedirectRuleWithoutHostAccessPermission)): Added.
(TestWebKitAPI::TEST(WKWebExtensionAPIDeclarativeNetRequest, 
RedirectRuleWithoutHostPermission)): Added.
(TestWebKitAPI::TEST(WKWebExtensionAPIDeclarativeNetRequest, 
ModifyHeadersRule)): Added.
(TestWebKitAPI::TEST(WKWebExtensionAPIDeclarativeNetRequest, 
ModifyHeadersRuleWithoutHostAccessPermission)): Added.
(TestWebKitAPI::TEST(WKWebExtensionAPIDeclarativeNetRequest, 
ModifyHeadersRuleWithoutHostPermission)): Added.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 302615: Web Extensions should set _maskedURLSchemes for WK...

2024-04-11 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 302615241a683d73784621ed5189724a8380bb7d
  
https://github.com/WebKit/WebKit/commit/302615241a683d73784621ed5189724a8380bb7d
  Author: Timothy Hatcher 
  Date:   2024-04-11 (Thu, 11 Apr 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/APIPageConfiguration.cpp
M Source/WebKit/UIProcess/API/APIPageConfiguration.h
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm

  Log Message:
  ---
  Web Extensions should set _maskedURLSchemes for WKWebViewConfiguration.
https://webkit.org/b/267712
rdar://problem/121202843

Reviewed by Brian Weinstein.

If a WKWebViewConfiguration has a _WKWebExtensionController, have 
_maskedURLSchemes default
to the set of registered Web Extension URL schemes from 
_WKWebExtensionMatchPattern.

* Source/WebKit/UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::maskedURLSchemes const): Added. Return web extension 
schemes by
default if the setter hasn't been called.
* Source/WebKit/UIProcess/API/APIPageConfiguration.h:
(API::PageConfiguration::setMaskedURLSchemes): Set 
m_data.maskedURLSchemesWasSet.
(API::PageConfiguration::maskedURLSchemes const): Deleted.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::webViewConfiguration): Set _maskedURLSchemes to 
an empty set.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm:
(TEST(WebKit, ConfigurationMaskedURLSchemes)): Updated expectations.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 28ec4a: Missing result from Web Extension storage get() wi...

2024-04-11 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 28ec4a08ef0a78d852aad9a1a6b7392c3c9dd3c5
  
https://github.com/WebKit/WebKit/commit/28ec4a08ef0a78d852aad9a1a6b7392c3c9dd3c5
  Author: Timothy Hatcher 
  Date:   2024-04-11 (Thu, 11 Apr 2024)

  Changed paths:
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIStorage.mm

  Log Message:
  ---
  Missing result from Web Extension storage get() with empty string key.
https://webkit.org/b/272542
rdar://problem/126290503

Reviewed by Brian Weinstein.

Allow getting an empty key from storage, we already allowed setting it. It was 
also working
when using an array of keys, but not a string key.

Bug details: https://github.com/lapcat/SafariExtensions/issues/12

* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm:
(WebKit::WebExtensionAPIStorageArea::get): Don't return early if the key is 
empty.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIStorage.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIStorage, Get)): Add tests for empty key.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 6d2709: Add support for background preferred_environment i...

2024-04-08 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6d27093d068a866cc0f2948e561882d1f2d8039b
  
https://github.com/WebKit/WebKit/commit/6d27093d068a866cc0f2948e561882d1f2d8039b
  Author: Timothy Hatcher 
  Date:   2024-04-08 (Mon, 08 Apr 2024)

  Changed paths:
M Source/WebCore/en.lproj/Localizable.strings
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtension.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm

  Log Message:
  ---
  Add support for background preferred_environment in Web Extensions.
https://webkit.org/b/272244
rdar://problem/125988233

Reviewed by Brian Weinstein.

Add support for extensions declaring a `preferred_environment` in the 
`background` entry.
The `preferred_environment` key can be a string or an array of strings. When an 
array is
used, the browser will prefer the first one it supports.

"background": {
"preferred_environment": [ "service_worker", "document" ],
"scripts": [ "script1.js", "script2.js" ]
}

If no environments are specified or supported, then we fallback to the previous 
handling of
the `scripts`, `page` or `service_worker` keys (in that order) for backwards 
compatibility.

This allows cross-browser extensions to have a single manifest that works in 
multiple
browsers. Chrome plans to only support service workers going forward, but 
Safari and
Firefox plan to support pages and service workers, and extension might prefer a 
document
environment over a service worker in Safari and Firefox.

This also adds support for a `_generated_service_worker.js` script that works 
with normal
scripts or modules based on the `scripts` and `type` keys if 
`preferred_environment`
is `service_worker`.

WECG discussion here: https://github.com/w3c/webextensions/issues/282

* Source/WebCore/en.lproj/Localizable.strings: Updated.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::resourceStringForPath): Support 
_generated_service_worker.js.
(WebKit::WebExtension::resourceDataForPath): Ditto.
(WebKit::WebExtension::backgroundContentUsesModules): Use renamed 
m_backgroundContentUsesModules.
(WebKit::WebExtension::backgroundContentIsServiceWorker): Use new 
m_backgroundContentEnvironment.
(WebKit::WebExtension::backgroundContentPath): Support 
_generated_service_worker.js.
(WebKit::WebExtension::generatedBackgroundContent): Generate the service worker 
script.
(WebKit::WebExtension::populateBackgroundPropertiesIfNeeded): Handle 
preferred_environment.
* Source/WebKit/UIProcess/Extensions/WebExtension.h: Added 
m_backgroundContentEnvironment and renamed
m_backgroundPageUsesModules to m_backgroundContentUsesModules.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm:
(TestWebKitAPI::TEST(WKWebExtension, BackgroundPreferredEnvironmentParsing)): 
Added.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm:
(TestWebKitAPI::TEST(WKWebExtensionController, 
BackgroundWithServiceWorkerPreferredEnvironment)): Added.
(TestWebKitAPI::TEST(WKWebExtensionController, 
BackgroundWithPageDocumentPreferredEnvironment)): Added.
(TestWebKitAPI::TEST(WKWebExtensionController, 
BackgroundWithScriptsDocumentPreferredEnvironment)): Added.
(TestWebKitAPI::TEST(WKWebExtensionController, 
BackgroundWithMultipleDocumentModuleScripts)): Added.
(TestWebKitAPI::TEST(WKWebExtensionController, 
BackgroundWithMultipleServiceWorkerScripts)): Added.
(TestWebKitAPI::TEST(WKWebExtensionController, 
BackgroundWithMultipleServiceWorkerModuleScripts)): Added.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ca4dc0: REGRESSION (277022@main): [ MacOS iOS ] 2X TestWeb...

2024-04-04 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ca4dc0387b4055b3743ed35c86a1580673123378
  
https://github.com/WebKit/WebKit/commit/ca4dc0387b4055b3743ed35c86a1580673123378
  Author: Timothy Hatcher 
  Date:   2024-04-04 (Thu, 04 Apr 2024)

  Changed paths:
M Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm

  Log Message:
  ---
  REGRESSION (277022@main): [ MacOS iOS ] 2X TestWebKitAPI.WKWebExtension are 
constant failures and 1 is a constant crash.
https://webkit.org/b/272177
rdar://problem/125924822

Reviewed by Brian Weinstein.

Only consider an extension updated if it has bundle hashes to compare. When 
running tests,
both lastSeenBundleHash and currentBundleHash will be nil, meaning the 
isEqualToData:
will always be NO, but we set the inverse in extensionDidChange.

Also the crash in WKWebExtensionDataRecord.GetDataRecordsForMultipleContexts 
was due to the
extension thinking it was updated, so the registered content script database 
was being deleted.
In this case the extension folder was freshly created before the load, so it 
was empty. When
a database gets deleted, the empty containing folder is also deleted. This 
causes an error when
we go to save the State.plist file in the folder that should exist. That in 
turn caused the
record lookup to only find one of two extensions, leading to an exception in 
the array access.

Stop having the database code delete the empty parent directory, since that is 
a holdover from Safari
storage structure where there wasn't a State.plist file, and only database 
storage was inside the
extension directory.

* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.mm:
(-[_WKWebExtensionSQLiteStore _deleteDatabase]): Remove call to 
_deleteExtensionStorageFolderIfEmpty.
(-[_WKWebExtensionSQLiteStore _deleteExtensionStorageFolderIfEmpty]): Deleted.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::determineInstallReasonDuringLoad): Check 
lastSeenBundleHash and currentBundleHash
for nil before calling isEqualToData:.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] adf972: Figure out how to tell if a Web Extension has been...

2024-04-03 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: adf9728dc4e18d23d5393998b76018b74154b910
  
https://github.com/WebKit/WebKit/commit/adf9728dc4e18d23d5393998b76018b74154b910
  Author: Timothy Hatcher 
  Date:   2024-04-03 (Wed, 03 Apr 2024)

  Changed paths:
M Source/WTF/wtf/spi/cocoa/SecuritySPI.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtension.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h

  Log Message:
  ---
  Figure out how to tell if a Web Extension has been updated in WebKit.
https://webkit.org/b/249266
rdar://problem/103573769

Reviewed by Brian Weinstein.

Use the code signing hash from the app extension bundle to tell if an extension
has updated. This will change after building in Xcode or via App Store updates.
There is no quick way to do this for non-bundle code paths, so we still consider
an extension updated if the version in the manifest changes.

Unfortunately, there is no way to test this with TestWebKitAPI currently since 
it requires
an extension to be loaded from a bundle, code signed, updated, and reloaded. I 
was able
to manually test this against extensions loaded in Safari.

* Source/WTF/wtf/spi/cocoa/SecuritySPI.h: Added functions and types for iOS and 
macOS.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm:
(WebKit::WebExtensionContext::clearRegisteredContentScripts): Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::bundleStaticCode const): Made const, use bridge_cast().
(WebKit::WebExtension::bundleHash const): Added.
(WebKit::WebExtension::validateResourceData): Store staticCode in variable. Use 
bridge_cast().
(WebKit::WebExtension::imageForPath): Use bridge_cast().
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::load): Call determineInstallReasonDuringLoad().
(WebKit::WebExtensionContext::loadBackgroundWebViewDuringLoad):
(WebKit::WebExtensionContext::determineInstallReasonDuringLoad): Renamed. Drop 
writeStateToStorage()
since it is already done by the caller in load(). Save and compare the 
bundleHash() to determine updates.
Always set LastSeenVersion. Call clearRegisteredContentScripts() when extension 
updates.
(WebKit::WebExtensionContext::queueStartupAndInstallEventsForExtensionIfNecessary):
 Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtension.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] fe7e1f: Web Extension objects should return the same JS wr...

2024-04-02 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fe7e1f64e14ecf2830f1a88c03276cbf25821cbf
  
https://github.com/WebKit/WebKit/commit/fe7e1f64e14ecf2830f1a88c03276cbf25821cbf
  Author: Timothy Hatcher 
  Date:   2024-04-02 (Tue, 02 Apr 2024)

  Changed paths:
M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.cpp
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPINamespace.mm

  Log Message:
  ---
  Web Extension objects should return the same JS wrapper (Bitwarden popup 
never loads).
https://webkit.org/b/272006
rdar://125633239

Reviewed by Brian Weinstein.

Make a cache per global context that we use to return the same wrapper for the 
JSWebExtensionWrappable
objects, that way equality checks in JavaScript will succeed.

This was breaking Bitwarden because they are doing a switch on the storage 
objects to get the
name, and since equality wasn't true, the switch would fail.

switch (e) {
case chrome.storage.local:
return "local";
case chrome.storage.sync:
return "sync";
case chrome.storage.session:
return "session";
default:
throw new Error("Unknown storage location")
}

* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.cpp:
(WebKit::wrapperCache): Added.
(WebKit::cacheMapDestroyed): Added.
(WebKit::wrapperCacheMap): Added.
(WebKit::getCachedWrapper): Added.
(WebKit::JSWebExtensionWrapper::wrap): Lookup and add the wrapper to the cache.
(WebKit::JSWebExtensionWrapper::finalize): Set private to nullptr.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPINamespace.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPINamespace, ObjectEquality)):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 32ee40: _WKWebExtensionMessagePort should not throw on inv...

2024-03-27 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 32ee401ab706355455e48265e18665e04268ea11
  
https://github.com/WebKit/WebKit/commit/32ee401ab706355455e48265e18665e04268ea11
  Author: Timothy Hatcher 
  Date:   2024-03-27 (Wed, 27 Mar 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionMessagePort.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm
M Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.mm

  Log Message:
  ---
  _WKWebExtensionMessagePort should not throw on invalid messages.
https://webkit.org/b/271796
rdar://125505726

Reviewed by Jeff Miller.

Change the exception that was thrown in -[_WKWebExtensionMessagePort 
sendMessage::] to an
error that is returned to the completion handler instead.

Also fixed the reply message handling for runtime.sendNativeMessage() so it 
returns the
error to the extension instead of throwing an exception.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.h:
(NS_ERROR_ENUM): Added _WKWebExtensionMessagePortErrorMessageInvalid.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContext::runtimeSendNativeMessage): Changed THROW_UNLESS 
into a check that returns
and error to the completion handler.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm:
(WebKit::toAPI): Added cases for ErrorType::MessageInvalid.
(WebKit::WebExtensionMessagePort::sendMessage): Changed THROW_UNLESS into a 
check that returns
_WKWebExtensionMessagePortErrorMessageInvalid error to the completion handler.
* Source/WebKit/UIProcess/Extensions/WebExtensionMessagePort.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm:
(TEST(WKWebExtensionAPIRuntime, SendNativeMessageWithInvalidReply)): Added.
(TEST(WKWebExtensionAPIRuntime, ConnectNativeWithInvalidMessage)): Added.
* Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.mm:
(-[TestWebExtensionsDelegate 
webExtensionController:openOptionsPageForExtensionContext:completionHandler:]): 
Fix typo.
(-[TestWebExtensionsDelegate 
webExtensionController:sendMessage:toApplicationIdentifier:forExtensionContext:replyHandler:]):
 Ditto.
(-[TestWebExtensionsDelegate 
webExtensionController:connectUsingMessagePort:forExtensionContext:completionHandler:]):
 Ditto.
(-[TestWebExtensionsDelegate 
webExtensionController:presentPopupForAction:forExtensionContext:completionHandler:]):
 Ditto.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 4a2e72: prepare-ChangeLog should include names for added /...

2024-03-27 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4a2e722b4c68d9d1395d0165bc39db4f71e295f9
  
https://github.com/WebKit/WebKit/commit/4a2e722b4c68d9d1395d0165bc39db4f71e295f9
  Author: Timothy Hatcher 
  Date:   2024-03-27 (Wed, 27 Mar 2024)

  Changed paths:
M Tools/Scripts/prepare-ChangeLog

  Log Message:
  ---
  prepare-ChangeLog should include names for added / changed / removed API 
tests.
https://webkit.org/b/271798

Reviewed by Alexey Proskuryakov.

Currently the output is like (no matter how many tests change):

(TestWebKitAPI::TEST):

When it should be like:

(TestWebKitAPI::TEST(WKWebExtensionAPIRuntime, ExampleNew)):
(TestWebKitAPI::TEST(WKWebExtensionAPIRuntime, StartupEvent)):
(TestWebKitAPI::TEST(WKWebExtensionAPIRuntime, Reload)): Deleted.

* Tools/Scripts/prepare-ChangeLog:
(get_function_line_ranges_for_cpp): Added $in_test_declaration to track when
we are inside a TEST() declaration, so the whole name can be captured in
the $potential_name variable.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 253859: activeTab should not be granted if the match patte...

2024-03-27 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 253859aff9169b69d73252ed37636c46ca299752
  
https://github.com/WebKit/WebKit/commit/253859aff9169b69d73252ed37636c46ca299752
  Author: Timothy Hatcher 
  Date:   2024-03-27 (Wed, 27 Mar 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  ---
  activeTab should not be granted if the match pattern is already Denied.
https://webkit.org/b/271771
rdar://problem/125499141

Reviewed by Brian Weinstein.

Prevent activeTab permissions from being granted if the current URL has
already been denied by the user. That is a strong signal the user does not
want this extension on the page.

Also fix a bug where activeTab permissions were not being removed with
granted or denied permisions, since the code was behind an early return.

Also use the new WebExtensionMatchPattern constructor that takes a URL
instead of manually constructing it in two places.

Added two tests for these cases.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::removeGrantedPermissionMatchPatterns):
(WebKit::WebExtensionContext::setPermissionState):
(WebKit::WebExtensionContext::userGesturePerformed):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TEST(WKWebExtensionAPITabs, ActiveTabWithDeniedPermissions)): Added.
(TEST(WKWebExtensionAPITabs, ActiveTabRemovedWithDeniedPermissions)): Added.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] d1de4e: Paths in browser.action.setIcon should be relative.

2024-03-27 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d1de4e4831588a251562b79e7ce98382cc0b9340
  
https://github.com/WebKit/WebKit/commit/d1de4e4831588a251562b79e7ce98382cc0b9340
  Author: Timothy Hatcher 
  Date:   2024-03-27 (Wed, 27 Mar 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIActionCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIAction.h
M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIAction.idl
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm

  Log Message:
  ---
  Paths in browser.action.setIcon should be relative.
https://webkit.org/b/271739
rdar://125436223

Reviewed by Brian Weinstein.

Resolve the path passed to action.setIcon() as relative to the current document.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(WebKit::WebExtensionAction::icon): If custom icons fail, fallback to the 
default icons.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIActionCocoa.mm:
(WebKit::WebExtensionAPIAction::setIcon): Resolve paths as relative against the 
frame's URL,
unless it is a data URL.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIAction.h:
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIAction.idl:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm:
(TEST(WKWebExtensionAPIAction, SetIconSinglePathRelative)): Added.
(TEST(WKWebExtensionAPIAction, SetIconMultipleSizesRelative)): Added.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 1d5b79: Add support for specifying unsupported Web Extensi...

2024-03-26 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1d5b797b0b1d4322de1ae6a4fb4b48e1fd840efc
  
https://github.com/WebKit/WebKit/commit/1d5b797b0b1d4322de1ae6a4fb4b48e1fd840efc
  Author: Timothy Hatcher 
  Date:   2024-03-26 (Tue, 26 Mar 2024)

  Changed paths:
M Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h
M 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in
M Source/WebKit/Shared/Extensions/WebExtensionDataType.h
M Source/WebKit/Shared/Extensions/WebExtensionEventListenerType.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIStorageCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebPageNamespaceCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIAction.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIAlarms.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPICommands.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPICookies.h
M 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDeclarativeNetRequest.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevTools.h
M 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsExtensionPanel.h
M 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsInspectedWindow.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsNetwork.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsPanels.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIEvent.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPILocalization.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIMenus.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINotifications.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIObject.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPermissions.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIScripting.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorage.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITest.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebNavigation.h
M 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebNavigationEvent.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebPageNamespace.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebRequest.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebRequestEvent.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindows.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindowsEvent.h
M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPINamespace.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWindows.mm

  Log Message:
  ---
  Add support for specifying unsupported Web Extension APIs.
https://webkit.org/b/271733
rdar://116824851

Reviewed by Jeff Miller.

Add an `unsupportedAPIs` property on `_WKWebExtensionContext` that allows the 
app to specify a
subset of web extension APIs that it chooses not to support, effectively making 
these APIs
`undefined` within the extension's JavaScript contexts. This enables extensions 
to employ
feature detection techniques for unsupported APIs, allowing them to adapt their 
behavior based
on the APIs actually supported by the app. Setting is only allowed when the 
context

[webkit-changes] [WebKit/WebKit] 3fd749: REGRESSION (275819@main): 5 Tests in TestWebKitAPI...

2024-03-21 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3fd7495076360b9c977af182f895ac3c1a62eaaf
  
https://github.com/WebKit/WebKit/commit/3fd7495076360b9c977af182f895ac3c1a62eaaf
  Author: Timothy Hatcher 
  Date:   2024-03-21 (Thu, 21 Mar 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h

  Log Message:
  ---
  REGRESSION (275819@main): 5 Tests in 
TestWebKitAPI.WKWebExtensionAPIWebRequest sometimes timeout (270812).
https://webkit.org/b/271392
rdar://124401551

Reviewed by Brian Weinstein.

Change from using webView:didFinishNavigation: to 
_webView:navigationDidFinishDocumentLoad: for
tracking when the background page has finished loading. This will properly fire 
after modules have
executed, or any async script elements in a custom background page.

This allows us to remove the arbitrary delay we had before, which was wholly 
inadequate across different
machines, and was firing too soon for slow machines. By waiting for the 
document load, we know any
background content event listeners will be registered and can properly dispatch 
events.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(-[_WKWebExtensionContextDelegate _webView:navigationDidFinishDocumentLoad:]): 
Added.
(WebKit::WebExtensionContext::performTasksAfterBackgroundContentLoads): Removed 
dispatch_after().
(WebKit::WebExtensionContext::didFinishDocumentLoad):
(-[_WKWebExtensionContextDelegate webView:didFinishNavigation:]): Deleted.
(WebKit::WebExtensionContext::didFinishNavigation): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 8b5a84: Change minimum alarm duration to 30 seconds.

2024-03-21 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8b5a84992e25d31d3a99a8ee9cebd23ec99cc023
  
https://github.com/WebKit/WebKit/commit/8b5a84992e25d31d3a99a8ee9cebd23ec99cc023
  Author: Timothy Hatcher 
  Date:   2024-03-21 (Thu, 21 Mar 2024)

  Changed paths:
M Source/WebKit/Shared/Extensions/WebExtensionConstants.h
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIAlarmsCocoa.mm

  Log Message:
  ---
  Change minimum alarm duration to 30 seconds.
https://webkit.org/b/271400
rdar://problem/125181579

Reviewed by Brian Weinstein.

* Source/WebKit/Shared/Extensions/WebExtensionConstants.h: Added 
webExtensionMinimumAlarmInterval.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIAlarmsCocoa.mm:
(WebKit::WebExtensionAPIAlarms::createAlarm): Use 
webExtensionMinimumAlarmInterval.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 02a0c1: Crash sending NaN in a message.

2024-03-15 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 02a0c1da946c004a88a6c8a0bf0c67360415c017
  
https://github.com/WebKit/WebKit/commit/02a0c1da946c004a88a6c8a0bf0c67360415c017
  Author: Timothy Hatcher 
  Date:   2024-03-15 (Fri, 15 Mar 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIStorage.mm

  Log Message:
  ---
  Crash sending NaN in a message.
https://webkit.org/b/271089
rdar://124710133

Reviewed by Brian Weinstein.

Make sure to use JSValue, which uses JSC's JSON encoder when sending messages. 
That
way NaN is treated as null. This matches what Safari was doing before. Also test
that storage.set handles NaN correctly, which was already using JSValue.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContext::runtimeSendNativeMessage):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContextProxy::internalDispatchRuntimeMessageEvent):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm:
(TEST(WKWebExtensionAPIRuntime, SendMessageWithNaNValue)): Added.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIStorage.mm:
(TEST(WKWebExtensionAPIStorage, Get)): Test NaN.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 3dc776: WKWebExtensionAPITabs.ActiveTab is flaky.

2024-03-15 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3dc776898be47c68845d9931dde1bd94638acaf3
  
https://github.com/WebKit/WebKit/commit/3dc776898be47c68845d9931dde1bd94638acaf3
  Author: Timothy Hatcher 
  Date:   2024-03-15 (Fri, 15 Mar 2024)

  Changed paths:
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  WKWebExtensionAPITabs.ActiveTab is flaky.
https://webkit.org/b/269932
rdar://problem/123457954

Reviewed by Alex Christensen and Brian Weinstein.

We need to mark the title as changed after the document has loaded,
not when the navigation is committed, since the  wont be parsed yet.
This was causing a race condition for accessing the web view's title.

To keep things simple in the tests, also fire the URL change with the title,
otherwise it will require rejiggering the tests to be more robust. In practice
these do fire together due to event coalescing, but that coalescing window
is small and we were sometimes firing them separate, and that was causing
flakiness. Fix the tests to expect both 'url' and 'title' in `changeInfo`.

* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionTab _webView:navigationDidFinishDocumentLoad:]): Added.
(-[TestWebExtensionTab webView:didCommitNavigation:]): Deleted.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TEST(WKWebExtensionAPITabs, ActiveTab)): Expect both 'url' and 'title' in 
`changeInfo`.
(TEST(WKWebExtensionAPITabs, UserGestureWithoutActiveTab)): Ditto.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] a0d65e: Permissions check in WebExtensionAPINamespace::isP...

2024-03-15 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a0d65e89085b46a9aabbb405df0181fc5c1e3ce6
  
https://github.com/WebKit/WebKit/commit/a0d65e89085b46a9aabbb405df0181fc5c1e3ce6
  Author: Timothy Hatcher 
  Date:   2024-03-15 (Fri, 15 Mar 2024)

  Changed paths:
M Source/WebKit/Modules/OSX_Private.modulemap
M Source/WebKit/Modules/iOS_Private.modulemap
M Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h
M 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermission.mm
A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermissionPrivate.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.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/WebExtensionContext.cpp
M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDeclarativeNetRequestCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPINamespace.mm

  Log Message:
  ---
  Permissions check in WebExtensionAPINamespace::isPropertyAllowed should be 
better.
https://webkit.org/b/259914
rdar://problem/113537360

Reviewed by Brian Weinstein.

Send the granted permissions map to the web processes, so the checks in 
isPropertyAllowed() are
accurate if the permissions have not been granted by the app.

* Source/WebKit/Modules/OSX_Private.modulemap: Added 
_WKWebExtensionPermissionPrivate.h.
* Source/WebKit/Modules/iOS_Private.modulemap: Ditto.
* Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h: Added 
grantedPermissions.
* 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in: 
Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermission.mm: Import 
_WKWebExtensionPermissionPrivate.h.
Added notifications permission, since it is needed to prevent it from being 
filtered out as an unsupported permission.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermissionPrivate.h: Added.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm:
(WebKit::WebExtensionContext::declarativeNetRequestGetMatchedRules): Use new 
extensionHasTemporaryPermission() helper.
The old check would have been true if the 'tabs' permission was granted for the 
whole extension too.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::supportedPermissions): Added notifications.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::permissionsDidChange): Send 
UpdateGrantedPermissions message to all processes.
(WebKit::WebExtensionContext::permissionState): Use new 
extensionHasTemporaryPermission() helper.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::extensionHasTemporaryPermission const): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::parameters const): Set grantedPermissions.
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
(WebKit::WebExtensionTab::hasActiveUserGesture const): Made const.
(WebKit::WebExtensionTab::temporaryPermissionMatchPattern const): Ditto.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj: Added 
_WKWebExtensionPermissionPrivate.h.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDeclarativeNetRequestCocoa.mm:
(WebKit::WebExtensionAPIDeclarativeNetRequest::getMatchedRules): Use 
hasPermission(), and toErrorString().
(WebKit::extensionHasPermission): Deleted.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:
(WebKit::WebExtensionAPINamespace::isPropertyAllowed): Use hasPermission().
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionAPIRuntime::isPropertyAllowed): Use hasPermission().
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm:
(WebKit::WebExtensionContextProxy::getOrCreate): Set m_grantedPermissions.
(WebKit::WebExtensionContextProxy::hasPermission const): Added.
(WebKit::WebExtensionContextProxy::updateGrantedPermissions): Added.
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess

[webkit-changes] [WebKit/WebKit] abc0f7: Crash in WebKit::WebExtensionContextProxy::toDOMWr...

2024-03-15 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: abc0f7739674fadcfb67ca264c4a9e6b31e18f01
  
https://github.com/WebKit/WebKit/commit/abc0f7739674fadcfb67ca264c4a9e6b31e18f01
  Author: Timothy Hatcher 
  Date:   2024-03-15 (Fri, 15 Mar 2024)

  Changed paths:
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageCocoa.mm
M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h

  Log Message:
  ---
  Crash in WebKit::WebExtensionContextProxy::toDOMWrapperWorld.
https://webkit.org/b/271064
rdar://124319215

Reviewed by Brian Weinstein.

Add a hasDOMWrapperWorld() helper method and use it to return early when the
contentScriptWorld() has not been created yet. This can happen if the page does
not have injected content, or the injected content hasn't executed yet.

Also adds const to inline methods that should be const in 
WebExtensionContextProxy.h.

* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContextProxy::internalDispatchRuntimeMessageEvent): Check 
hasDOMWrapperWorld()
and early return while calling the completionHandler.
(WebKit::WebExtensionContextProxy::internalDispatchRuntimeConnectEvent): Ditto.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageCocoa.mm:
(WebKit::WebExtensionContextProxy::dispatchStorageChangedEvent): Check 
hasDOMWrapperWorld().
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm:
(WebKit::WebExtensionContextProxy::toDOMWrapperWorld const): Made const.
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 5745ae: RegisteredContentScripts.db should only be created...

2024-03-13 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5745aee1167a4b0f77891efe606302d5160fdbde
  
https://github.com/WebKit/WebKit/commit/5745aee1167a4b0f77891efe606302d5160fdbde
  Author: Timothy Hatcher 
  Date:   2024-03-13 (Wed, 13 Mar 2024)

  Changed paths:
M 
Source/WebKit/Shared/Extensions/_WKWebExtensionRegisteredScriptsSQLiteStore.mm
M Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteDatabase.mm
M Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.h
M Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/_WKWebExtensionDeclarativeNetRequestSQLiteStore.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/_WKWebExtensionStorageSQLiteStore.mm

  Log Message:
  ---
  RegisteredContentScripts.db should only be created if needed.
https://webkit.org/b/270931
rdar://problem/124554561

Reviewed by Sihui Liu and Jeff Miller.

Change the APIs that use SQL store to use the new 
_openDatabaseIfNecessaryReturningErrorMessage:createIfNecessary:
method and pass NO when the access is deleting or getting data. This makes sure 
we don't create an empty database
just to read or delete no data.

* 
Source/WebKit/Shared/Extensions/_WKWebExtensionRegisteredScriptsSQLiteStore.mm:
(-[_WKWebExtensionRegisteredScriptsSQLiteStore 
deleteScriptsWithIDs:completionHandler:]): Pass createIfNecessary:NO.
(-[_WKWebExtensionRegisteredScriptsSQLiteStore 
_getScriptsWithOutErrorMessage:]): Ditto.
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteDatabase.mm:
(-[_WKWebExtensionSQLiteDatabase _openWithFlags:vfs:error:]): Return no error 
if thsi is a can't open error and
we were not asekd to create the file.
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.h:
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.mm:
(-[_WKWebExtensionSQLiteStore _openDatabaseIfNecessaryReturningErrorMessage:]): 
Call the new method with YES.
(-[_WKWebExtensionSQLiteStore 
_openDatabaseIfNecessaryReturningErrorMessage:createIfNecessary:]): Added.
(-[_WKWebExtensionSQLiteStore 
_openDatabase:withAccessType:deleteDatabaseFileOnError:]): Added accessType 
param.
(-[_WKWebExtensionSQLiteStore _deleteDatabaseFileAtURL:reopenDatabase:]): Pass 
SQLiteDatabaseAccessTypeReadWriteCreate.
(-[_WKWebExtensionSQLiteStore _openDatabase:deleteDatabaseFileOnError:]): 
Deleted.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/_WKWebExtensionDeclarativeNetRequestSQLiteStore.mm:
(-[_WKWebExtensionDeclarativeNetRequestSQLiteStore 
deleteRules:completionHandler:]): Pass createIfNecessary:NO.
(-[_WKWebExtensionDeclarativeNetRequestSQLiteStore 
_getRulesWithOutErrorMessage:]): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/_WKWebExtensionStorageSQLiteStore.mm:
(-[_WKWebExtensionStorageSQLiteStore getStorageSizeForKeys:completionHandler:]):
(-[_WKWebExtensionStorageSQLiteStore deleteValuesForKeys:completionHandler:]):
(-[_WKWebExtensionStorageSQLiteStore 
_getValuesForAllKeysReturningErrorMessage:]):
(-[_WKWebExtensionStorageSQLiteStore _getAllKeysReturningErrorMessage:]):
(-[_WKWebExtensionStorageSQLiteStore _getValuesForKeys:outErrorMessage:]):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] b74a5a: REGRESSION (275981@main): [ macOS ] 7 tests in Tes...

2024-03-12 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b74a5a42516e4102fd5b9b594e566099bf782ad2
  
https://github.com/WebKit/WebKit/commit/b74a5a42516e4102fd5b9b594e566099bf782ad2
  Author: Timothy Hatcher 
  Date:   2024-03-12 (Tue, 12 Mar 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  ---
  REGRESSION (275981@main): [ macOS ] 7 tests in 
TestWebKitAPI.WKWebExtensionAPIPermissions are a constant failure/timeout.
https://webkit.org/b/270872
rdar://problem/124475393

Reviewed by Jeff Miller.

When requesting permissions via permissions.request(), we need to include 
optional permissions
in the check. That was actually happening by accident before, since 
!hasPermission() was returning
true for any unknown permission. With the change to needsPermission(), only 
RequestedExplicitly
or RequestedImplicitly results were counted. To fix this, a new option was 
added for use by
the permissions API to include optional permissions in the RequestedImplicitly 
category.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm:
(WebKit::WebExtensionContext::permissionsRequest): Pass the 
IncludeOptionalPermissions option.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::requestPermissionMatchPatterns): Pass through 
options to needsPermission().
(WebKit::WebExtensionContext::requestPermissionToAccessURLs): Ditto.
(WebKit::WebExtensionContext::requestPermissions): Ditto.
(WebKit::WebExtensionContext::permissionState): Added support for 
IncludeOptionalPermissions to check
the optional permissions from the extension's manifest.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm:
(WebKit::WebExtensionMatchPattern::patternsMatchURL): Added const to URL to fix 
build issue.
(WebKit::WebExtensionMatchPattern::patternsMatchPattern): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::requestPermissionMatchPatterns): Added options 
parameter.
(WebKit::WebExtensionContext::requestPermissionToAccessURLs): Ditto.
(WebKit::WebExtensionContext::requestPermissions): Ditto.
* Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TEST(WKWebExtensionAPITabs, QueryWithAccessPrompt)): Grant tabs permission so 
the tab URL counts as a
requested URL and the prompt delegate will be called.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 5c2c34: Crash when quickly loading and unloading a Web Ext...

2024-03-12 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5c2c34238fb70315d37c0d45c798e62ca746908c
  
https://github.com/WebKit/WebKit/commit/5c2c34238fb70315d37c0d45c798e62ca746908c
  Author: Timothy Hatcher 
  Date:   2024-03-12 (Tue, 12 Mar 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm

  Log Message:
  ---
  Crash when quickly loading and unloading a Web Extension.
https://webkit.org/b/270862
rdar://124126618

Reviewed by Jeff Miller.

When the extension controller is loading an extension context we move the local 
storage.
The lambda can escape and be called async, but was only capturing references. 
We need
to capture a protected this reference, and check if the context is still loaded
before proceeding after the move has finished.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::load):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] a9eb13: Add HAVE_UPDATED_WEB_EXTENSION_PROMPT_COMPLETION_H...

2024-03-12 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a9eb13f5a7a4fd8ee460706369037445cadc10ed
  
https://github.com/WebKit/WebKit/commit/a9eb13f5a7a4fd8ee460706369037445cadc10ed
  Author: Timothy Hatcher 
  Date:   2024-03-12 (Tue, 12 Mar 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h

  Log Message:
  ---
  Add HAVE_UPDATED_WEB_EXTENSION_PROMPT_COMPLETION_HANDLER.
https://webkit.org/b/270858
rdar://problem/124459704

Reviewed by Jeff Miller.

We need to add a define to allow clients to adopt the delegate changes from 
275950@main.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 761708: WebExtensionContext::requestPermissions needs to i...

2024-03-12 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 76170850b6e90c8640ed83bac975a365972c5679
  
https://github.com/WebKit/WebKit/commit/76170850b6e90c8640ed83bac975a365972c5679
  Author: Timothy Hatcher 
  Date:   2024-03-12 (Tue, 12 Mar 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h

  Log Message:
  ---
  WebExtensionContext::requestPermissions needs to ignore denied permissions.
https://webkit.org/b/270857
rdar://problem/124457612

Reviewed by Jeff Miller.

Currently these request methods use hasPermission(), but that isn't correct 
since if
the permission is denied we shouldn't request it. Add new needsPermission() 
methods
that return true only if the permission is requested.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::requestPermissionMatchPatterns): Use 
needsPermission().
(WebKit::WebExtensionContext::requestPermissionToAccessURLs): Ditto.
(WebKit::WebExtensionContext::requestPermissions): Ditto.
(WebKit::WebExtensionContext::needsPermission): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::needsPermission): Added.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 33e22a: Some APIs like tabs.query need to prompt for permi...

2024-03-11 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 33e22ac2d07d9761d8b07b0e73df2d6ade6f84b1
  
https://github.com/WebKit/WebKit/commit/33e22ac2d07d9761d8b07b0e73df2d6ade6f84b1
  Author: Timothy Hatcher 
  Date:   2024-03-11 (Mon, 11 Mar 2024)

  Changed paths:
M Source/WebCore/page/UserContentURLPattern.cpp
M Source/WebKit/Platform/cocoa/CocoaHelpers.h
M Source/WebKit/Platform/cocoa/CocoaHelpers.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsInspectedWindow.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWindowsCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtension.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIPermissions.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionMatchPattern.mm
M Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.h
M Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.mm

  Log Message:
  ---
  Some APIs like tabs.query need to prompt for permission before returning.
https://webkit.org/b/262714
rdar://problem/116535817

Reviewed by Jeff Miller.

Change the existing permission delegate calls from being just used for 
permissions.request()
and into helper methods on WebExtensionContext. Now filter out already granted 
permissions,
and only send the delegate messages if some of them are still required.

Also add the timeout for these requests, so they auto expire in 2 minutes, 
preventing the
extensions scripts from waiting for a response for too long.

Also add expirationDate parameter to the completionHandler, so the app can 
grant for a limited
amount of time, or pass nil to grant indefinitely.

Finally, wrap many extension APIs with the new requestPermissionToAccessURLs() 
and request the
URLs for the tabs and cookies needed by those APIs. This includes some like 
scripting, which
were never wrapped like this in Safari's implementation.

Deleted some redundant toImpl / toAPI helpers that we already had elsewhere.

* Source/WebCore/page/UserContentURLPattern.cpp:
(WebCore::UserContentURLPattern::UserContentURLPattern):
* Source/WebKit/Platform/cocoa/CocoaHelpers.h:
* Source/WebKit/Platform/cocoa/CocoaHelpers.mm:
(WebKit::toAPI):
(WebKit::toAPIArray):
(WebKit::toImpl):
(WebKit::toImplSet): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h:
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm:
(WebKit::WebExtensionContext::cookiesGet):
(WebKit::WebExtensionContext::cookiesGetAll):
(WebKit::WebExtensionContext::cookiesSet):
(WebKit::WebExtensionContext::cookiesRemove):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm:
(WebKit::WebExtensionContext::declarativeNetRequestGetMatchedRules):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsInspectedWindow.mm:
(WebKit::WebExtensionContext::devToolsInspectedWindowEval):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm:
(WebKit::WebExtensionContext::permissionsRequest):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm:
(WebKit::WebExtensionContext::scriptingExecuteScript):
(WebKit::WebExtensionContext::scriptingInsertCSS):
(WebKit::WebExtensionContext::scriptingRemoveCSS):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsGet):
(WebKit::WebExtensionContext::tabsGetCurrent):
(WebKit::WebExtensionContext::tabsQuery):
(WebKit::WebExtensionContext::tabsDetectLanguage):
(WebKit::WebExtensionContext::tabsCaptureVisibleTab):
(WebKit::WebExtensionContext::tabsRemove):
(WebKit::WebExtensionContext::tabsExecuteScript):
(WebKit::WebExtensionContext::tabsInsertCSS):
(WebKit

[webkit-changes] [WebKit/WebKit] afcd0d: Prefer `scripts` and `page` over `service_worker` ...

2024-03-11 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: afcd0d3bf64b4e8942e9b01db34400a161a2619e
  
https://github.com/WebKit/WebKit/commit/afcd0d3bf64b4e8942e9b01db34400a161a2619e
  Author: Timothy Hatcher 
  Date:   2024-03-11 (Mon, 11 Mar 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm

  Log Message:
  ---
  Prefer `scripts` and `page` over `service_worker` in Web Extension manifest.
https://webkit.org/b/270750
rdar://problem/124334426

Reviewed by Brian Weinstein.

This has been discussed in https://github.com/w3c/webextensions/issues/282.
When an extension specifies multiple `background` keys, the browser can prefer
which one to use based on what is supported. We support all three, but service
worker support is not the best environment for WebKit Web Extensions.

In the scenario where all three are supplied, we prefer `scripts`, `page`,
then `service_worker`.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::populateBackgroundPropertiesIfNeeded):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm:
(TEST(WKWebExtension, BackgroundParsing)): Added tests.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 389494: Support `world` in `content_scripts` for Web Exten...

2024-03-11 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 38949431399cb8ca2a55db3cd3f1292f4fb0f1ca
  
https://github.com/WebKit/WebKit/commit/38949431399cb8ca2a55db3cd3f1292f4fb0f1ca
  Author: Timothy Hatcher 
  Date:   2024-03-11 (Mon, 11 Mar 2024)

  Changed paths:
M Source/WebCore/en.lproj/Localizable.strings
M Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
M Source/WebKit/Shared/Extensions/WebExtensionFrameParameters.h
M Source/WebKit/Shared/Extensions/WebExtensionMessageSenderParameters.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtension.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionContext.mm

  Log Message:
  ---
  Support `world` in `content_scripts` for Web Extension manifests.
https://webkit.org/b/270748
rdar://problem/124331541

Reviewed by Brian Weinstein.

Add support for the `world` key in `content_scripts`. Also changed the 
`forMainWorld`
boolean to be `contentWorldType` and use `WebExtensionContentWorldType` for 
consistency.

Drive-by fixes to provide missing default values for plain types to avoid 
random memory.

* Source/WebCore/en.lproj/Localizable.strings: Updated with the script.
* Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js: Ditto.
* Source/WebKit/Shared/Extensions/WebExtensionFrameParameters.h: Add default 
value.
* Source/WebKit/Shared/Extensions/WebExtensionMessageSenderParameters.h: Ditto.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm:
(WebKit::WebExtensionContext::scriptingExecuteScript): Use toContentWorld().
(WebKit::WebExtensionContext::createInjectedContentForScripts): Use 
contentWorldType. Also
use value_or() in case the web process does not set the value.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::populateContentScriptPropertiesIfNeeded): Parse the 
`world` key.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::toContentWorld const): Added.
(WebKit::WebExtensionContext::addInjectedContent): Use toContentWorld().
* Source/WebKit/UIProcess/Extensions/WebExtension.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtension.mm:
(TEST(WKWebExtension, ContentScriptsParsing)): Added `world` tests.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm:
(TEST(WKWebExtensionAPIScripting, MainWorld)): Added.
(TEST(WKWebExtensionAPIScripting, IsolatedWorld)): Added.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionContext.mm:
(TEST(WKWebExtensionContext, ContentScriptsParsing)): Added `world` tests.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] f606e5: WebExtensionContext::permissionsRequest needs to p...

2024-03-08 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f606e5e964d5dcd860e4a6625db8092664bbc05c
  
https://github.com/WebKit/WebKit/commit/f606e5e964d5dcd860e4a6625db8092664bbc05c
  Author: Timothy Hatcher 
  Date:   2024-03-08 (Fri, 08 Mar 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIPermissions.mm

  Log Message:
  ---
  WebExtensionContext::permissionsRequest needs to properly capture 
completionHandler.
https://webkit.org/b/269678
rdar://problem/123197187

Reviewed by Brian Weinstein.

Rework permissions.request() to only call the delegate if needed, never with an 
empty set.
Also the completionHandler only worked if it was called immediately, but we 
need to support
it being called later. To support all this, a CallbackAggregator was needed and 
it now waits
for both delegates to be called (in either order) since they both retain the 
aggregator.

This also changes the handling to better match the permissions.request() API, 
by only
allowing granting all or none, not some. Added a test for this.

Also updated the tests to not use nil, since the block parameters are not 
nullable.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm:
(WebKit::WebExtensionContext::permissionsRequest):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContext::runtimeSendNativeMessage):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIPermissions.mm:
(TEST(WKWebExtensionAPIPermissions, Basics)): Renamed.
(TEST(WKWebExtensionAPIPermissions, AcceptPermissionsRequest)): Updated.
(TEST(WKWebExtensionAPIPermissions, DenyPermissionsRequest)): Updated.
(TEST(WKWebExtensionAPIPermissions, 
AcceptPermissionsDenyMatchPatternsRequest)): Updated.
(TEST(WKWebExtensionAPIPermissions, RequestPermissionsOnly)): Updated.
(TEST(WKWebExtensionAPIPermissions, RequestMatchPatternsOnly)): Updated.
(TEST(WKWebExtensionAPIPermissions, GrantOnlySomePermissions)): Added.
(TEST(WKWebExtensionAPIPermissions, GrantOnlySomeMatchPatterns)): Added.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 5bf1b8: Speed up WebExtensionContext::getCurrentTab().

2024-03-08 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5bf1b8f92e693edcb769f2935e864fa0a3752a96
  
https://github.com/WebKit/WebKit/commit/5bf1b8f92e693edcb769f2935e864fa0a3752a96
  Author: Timothy Hatcher 
  Date:   2024-03-08 (Fri, 08 Mar 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm

  Log Message:
  ---
  Speed up WebExtensionContext::getCurrentTab().
https://webkit.org/b/270644
rdar://problem/124222506

Reviewed by Brian Weinstein.

Simplify the logic in getCurrentTab() by returning early if the page is
a know extension page, and IncludeExtensionViews::No. This prevents logging
an error "Tab for page XX was not found" and avoids looping through open tabs.

Also removed the deep nesting, and added gotos to skip to the end checks faster.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::getCurrentTab const):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 2bc765: Build Failure: implicit capture of 'this' with a c...

2024-03-08 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2bc765b66bd0b3aa9978cbbe6ad8b80cf5a7f1e8
  
https://github.com/WebKit/WebKit/commit/2bc765b66bd0b3aa9978cbbe6ad8b80cf5a7f1e8
  Author: Timothy Hatcher 
  Date:   2024-03-08 (Fri, 08 Mar 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIActionCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIAlarmsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICommandsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIMenusCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIStorageCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWindowsCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionURLSchemeHandlerCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm

  Log Message:
  ---
  Build Failure: implicit capture of 'this' with a capture default of '=' is 
deprecated.
https://webkit.org/b/270704
rdar://124275043

Unreviewed build fix.

Added `this` to the capture blocks.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIActionCocoa.mm:
(WebKit::WebExtensionContext::fireActionClickedEventIfNeeded):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIAlarmsCocoa.mm:
(WebKit::WebExtensionContext::fireAlarmsEventIfNeeded):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICommandsCocoa.mm:
(WebKit::WebExtensionContext::fireCommandEventIfNeeded):
(WebKit::WebExtensionContext::fireCommandChangedEventIfNeeded):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm:
(WebKit::WebExtensionContext::fireCookiesChangedEventIfNeeded):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIMenusCocoa.mm:
(WebKit::WebExtensionContext::fireMenusClickedEventIfNeeded):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm:
(WebKit::WebExtensionContext::firePermissionsEventListenerIfNecessary):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContext::runtimeSendMessage):
(WebKit::WebExtensionContext::runtimeConnect):
(WebKit::WebExtensionContext::runtimeWebPageSendMessage):
(WebKit::WebExtensionContext::runtimeWebPageConnect):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIStorageCocoa.mm:
(WebKit::WebExtensionContext::fireStorageChangedEventIfNeeded):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsConnect):
(WebKit::WebExtensionContext::fireTabsCreatedEventIfNeeded):
(WebKit::WebExtensionContext::fireTabsUpdatedEventIfNeeded):
(WebKit::WebExtensionContext::fireTabsReplacedEventIfNeeded):
(WebKit::WebExtensionContext::fireTabsDetachedEventIfNeeded):
(WebKit::WebExtensionContext::fireTabsMovedEventIfNeeded):
(WebKit::WebExtensionContext::fireTabsAttachedEventIfNeeded):
(WebKit::WebExtensionContext::fireTabsActivatedEventIfNeeded):
(WebKit::WebExtensionContext::fireTabsHighlightedEventIfNeeded):
(WebKit::WebExtensionContext::fireTabsRemovedEventIfNeeded):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWindowsCocoa.mm:
(WebKit::WebExtensionContext::fireWindowsEventIfNeeded):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::didStartProvisionalLoadForFrame):
(WebKit::WebExtensionContext::didCommitLoadForFrame):
(WebKit::WebExtensionContext::didFinishLoadForFrame):
(WebKit::WebExtensionContext::didFailLoadForFrame):
(WebKit::WebExtensionContext::resourceLoadDidSendRequest):
(WebKit::WebExtensionContext::resourceLoadDidPerformHTTPRedirection):
(WebKit::WebExtensionContext::resourceLoadDidReceiveChallenge):
(WebKit::WebExtensionContext::resourceLoadDidReceiveResponse):
(WebKit::WebExtensionContext::resourceLoadDidCompleteWithError):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] cc9d7c: Support non-persistent background pages in Web Ext...

2024-03-07 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cc9d7c9f1548c51d31b6695b7c06a43c3ffa50f7
  
https://github.com/WebKit/WebKit/commit/cc9d7c9f1548c51d31b6695b7c06a43c3ffa50f7
  Author: Timothy Hatcher 
  Date:   2024-03-07 (Thu, 07 Mar 2024)

  Changed paths:
M Source/WTF/wtf/HashCountedSet.h
M Source/WebKit/Platform/IPC/ArgumentCoders.h
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Shared/Extensions/WebExtensionContentWorldType.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIActionCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIAlarmsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICommandsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIEventCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIMenusCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPortCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIStorageCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWindowsCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in

  Log Message:
  ---
  Support non-persistent background pages in Web Extensions.
https://webkit.org/b/246483
rdar://problem/114823336

Reviewed by Brian Weinstein.

Fixes a number of things related to non-persistent pages. The main one was that 
all current uses
of wakeUpBackgroundContentIfNecessaryToFireEvents() were not capturing the 
lambda variables correctly.
This was mostly fine since the lambda was almost always called immediately, but 
not it will be stored
and called later when the page needs woken back up. Changed all lambdas to 
protect the context, and
copy their simple parameters and use Ref / RefPtr for counted objects.

The next issue was that ports were not being disconnected when the extension 
pages went away, leaving
a dangling port that the other pages could still message to no avail. We now 
disconnect ports for any
page when it is removed from the WebExtensionController, which is when 
WebPageProxy is deallocated.
This required having the UI process track what ports were open for which page.

And third, the runtime.connect() and runtime.sendMessage() implementations were 
not waking the background.
This was fine before since it was almost always guaranteed to exist (but likely 
a race condition). Now
we wait for the page to load before trying to deliver the messages.

Currently almost all tests use non-persistent pages, and this change is well 
exercised with the tests.
When using the TestWebKitAPI runner, the timeouts for the background page is 
shortened to 3 seconds, vs
the typical 30 seconds. And open and active ports is 6 seconds, vs the typical 
2 minutes. Most tests will
only wake the background page once, but some do run long enough to have it 
terminated and get relaunched.

* Source/WTF/wtf/HashCountedSet.h:
(WTF::Traits>::isValidValue): Added. The only impl passing off to HashMap was 
dead code, and
was removed from HashMap. Add back an implemetation copied from HashSet.
* Source/WebKit/Platform/IPC/ArgumentCoders.h: Fix return to be std::nullopt. 
This was also dead
code that is now being hit since we are using it again.
* Source/WebKit/Scripts/webkit/messages.py:
(class_template_headers): Added HashCountedSet.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIActionCocoa.mm:
(WebKit::WebExtensionContext::fireActionClickedEventIfNeeded): Fix lambda to 
properly capture.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIAlarmsCocoa.mm:
(WebKit::WebExtensionContext::fireAlarmsEventIfNeeded): Ditto.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICommandsCocoa.mm:
(WebKit::WebExtensionContext::fireCommandEventIfNeeded): Ditto.
(Web

[webkit-changes] [WebKit/WebKit] c90c0b: ASSERTION FAILED: Unhandled message WebExtensionCo...

2024-03-05 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c90c0bf192dde554a4fa459549851f7603e4b11f
  
https://github.com/WebKit/WebKit/commit/c90c0bf192dde554a4fa459549851f7603e4b11f
  Author: Timothy Hatcher 
  Date:   2024-03-05 (Tue, 05 Mar 2024)

  Changed paths:
M 
Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm
M Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.h

  Log Message:
  ---
  ASSERTION FAILED: Unhandled message 
WebExtensionController_DidStartProvisionalLoadForFrame to 17.
https://webkit.org/b/270543
rdar://124098768

Reviewed by Brady Eidson.

Return early for these messages if there are no extension contexts.

* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm:
(WebKit::WebExtensionControllerProxy::didStartProvisionalLoadForFrame):
(WebKit::WebExtensionControllerProxy::didCommitLoadForFrame):
(WebKit::WebExtensionControllerProxy::didFinishLoadForFrame):
(WebKit::WebExtensionControllerProxy::didFailLoadForFrame):
* Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] e1d3b9: WKWebExtensionTab and WKWebExtensionWindow tests a...

2024-03-04 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e1d3b912b733e4145bad85c8b21cc816fd0f
  
https://github.com/WebKit/WebKit/commit/e1d3b912b733e4145bad85c8b21cc816fd0f
  Author: Timothy Hatcher 
  Date:   2024-03-04 (Mon, 04 Mar 2024)

  Changed paths:
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionTab.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionWindow.mm

  Log Message:
  ---
  WKWebExtensionTab and WKWebExtensionWindow tests are failing after 
275651@main.
https://webkit.org/b/270502
rdar://problem/124049994

Unreviewed test gardening.

* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionTab.mm:
(TestWebKitAPI::TEST): Updated expected results.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionWindow.mm:
(TestWebKitAPI::TEST): Updated expected results.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 579e38: Add EnabledIf to all Web Extensions messages.

2024-03-04 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 579e387b33d52132dc80e23392e1067184eadd58
  
https://github.com/WebKit/WebKit/commit/579e387b33d52132dc80e23392e1067184eadd58
  Author: Timothy Hatcher 
  Date:   2024-03-04 (Mon, 04 Mar 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIActionCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIAlarmsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICommandsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIMenusCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIStorageCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWebNavigationCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
M Source/WebKit/UIProcess/Extensions/WebExtensionController.messages.in
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIMenus.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionDataRecord.mm
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  Add EnabledIf to all Web Extensions messages.
https://webkit.org/b/270468
rdar://problem/124026371

Reviewed by Brian Weinstein.

Added EnabledIf to all messages, and for APIs that require granted permissions,
use the new isAPIMessageAllowed() which does the permissions checks. This will
prevent a compromised web process from trying to send messages that are not
currently expected by the UI process.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIActionCocoa.mm:
(WebKit::WebExtensionContext::isActionMessageAllowed): Added.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIAlarmsCocoa.mm:
(WebKit::WebExtensionContext::isAlarmsMessageAllowed): Added.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICommandsCocoa.mm:
(WebKit::WebExtensionContext::isCommandsMessageAllowed): Added.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm:
(WebKit::WebExtensionContext::isCookiesMessageAllowed): Added.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm:
(WebKit::WebExtensionContext::isDeclarativeNetRequestMessageAllowed): Added.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIMenusCocoa.mm:
(WebKit::WebExtensionContext::isMenusMessageAllowed): Added.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm:
(WebKit::WebExtensionContext::isScriptingMessageAllowed): Added.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIStorageCocoa.mm:
(WebKit::WebExtensionContext::isStorageMessageAllowed): Added.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWebNavigationCocoa.mm:
(WebKit::WebExtensionContext::isWebNavigationMessageAllowed): Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::isDevToolsMessageAllowed): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/UIProcess/Extensions/WebExtensionController.messages.in:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIMenus.mm:
(TEST(WKWebExtensionAPIMenus, ActionMenus)): Reset activeTab, 
ActionMenusWithActiveTab tests that.
(TEST(WKWebExtensionAPIMenus, ActionMenusWithActiveTab)): Remove activeTab 
grant, it is granted by manager.
(TEST(WKWebExtensionAPIMenus, MacActiveTabContextMenuItems)): Ditto.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TEST(WKWebExtensionAPITabs, UserGestureWithoutActiveTab)): Reset activeTab, 
ActiveTab tests that.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionDataRecord.mm:
(TEST(WKWebExtensionDataRecord, GetDataRecords)): Grant storage permission.
(TEST(WKWebExtensionDataRecord, GetDataRecordsForMultipleContexts)): Ditto.
(TEST(WKWebExtensionDataRecord, DISABLED_RemoveDataRecords)): Ditto.
(TEST(WKWebExtensionDataRecord, 
DISABLED_RemoveDataRecordsForMultipleContexts)): Ditto.
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionManager initForExtension:extensionControllerConfiguration:]):
Grant all requested API permissions, so it does not need done in each test.
This matches what we do in Safari.

Canonical link: https

[webkit-changes] [WebKit/WebKit] bab9c3: clipboardWrite permission does not work in Web Ext...

2024-03-04 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bab9c3e3b0ebd24d87c99a17d979bc2b8c7cd715
  
https://github.com/WebKit/WebKit/commit/bab9c3e3b0ebd24d87c99a17d979bc2b8c7cd715
  Author: Timothy Hatcher 
  Date:   2024-03-04 (Mon, 04 Mar 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIPermissions.mm

  Log Message:
  ---
  clipboardWrite permission does not work in Web Extensions.
https://webkit.org/b/270419
rdar://123976956

Reviewed by Brian Weinstein.

Set the javaScriptCanAccessClipboard preference when the clipboardWrite 
permission
is granted or is revoked. Added three new tests to verify this works.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::permissionsDidChange): Added.
(WebKit::WebExtensionContext::postAsyncNotification): Call 
permissionsDidChange().
(WebKit::WebExtensionContext::enumerateExtensionPages): Added.
(WebKit::WebExtensionContext::relatedWebView): Use enumerateExtensionPages().
(WebKit::WebExtensionContext::webViewConfiguration): Set 
_javaScriptCanAccessClipboard
based on the clipboardWrite permission.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIPermissions.mm:
(TestWebKitAPI::runScriptWithUserGesture): Added ASSERT.
(TEST(WKWebExtensionAPIPermissions, ClipboardWrite)): Added.
(TEST(WKWebExtensionAPIPermissions, ClipboardWriteWithoutPermission)): Added.
(TEST(WKWebExtensionAPIPermissions, ClipboardWriteWithRequest)): Added.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 7a3236: Context menu items for Action and Tab are not filt...

2024-03-04 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7a3236ba274c5374337531088e431b1ce8728a77
  
https://github.com/WebKit/WebKit/commit/7a3236ba274c5374337531088e431b1ce8728a77
  Author: Timothy Hatcher 
  Date:   2024-03-04 (Mon, 04 Mar 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionMenuItem.cpp
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIMenus.mm

  Log Message:
  ---
  Context menu items for Action and Tab are not filtered by tab URL.
https://webkit.org/b/270420
rdar://123977080

Reviewed by Brian Weinstein.

Allow documentUrlPatterns to apply to action and tab context for menus. This 
prevents
menu items from appearing that don’t apply to the current document in the tab.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(WebKit::WebExtensionAction::platformMenuItems const): Set frameURL.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::platformMenuItems const): Set frameURL.
* Source/WebKit/UIProcess/Extensions/WebExtensionMenuItem.cpp:
(WebKit::WebExtensionMenuItem::matches const): Match frameURL before the early
return for action and tab contexts. Only match if frameURL is non-null.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIMenus.mm:
(TEST(WKWebExtensionAPIMenus, ActionMenus)): Added documentUrlPatterns to one 
item.
(TEST(WKWebExtensionAPIMenus, TabMenus)): Ditto.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 24d05e: Return empty port with a delay if destination exte...

2024-03-04 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 24d05ed6508910459be7ca081f3d4042a1174f68
  
https://github.com/WebKit/WebKit/commit/24d05ed6508910459be7ca081f3d4042a1174f68
  Author: Timothy Hatcher 
  Date:   2024-03-04 (Mon, 04 Mar 2024)

  Changed paths:
M Source/WebKit/Platform/cocoa/CocoaHelpers.h
M Source/WebKit/Platform/cocoa/CocoaHelpers.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPortCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIEventCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIObject.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm

  Log Message:
  ---
  Return empty port with a delay if destination extension isn't found for 
externally_connectable.
https://webkit.org/b/269539
rdar://123060441

Reviewed by Brian Weinstein.

Enhance privacy in web-to-extension messaging by ensuring indistinguishability 
between scenarios
where an extension is not found or lacks permission to the page and when 
messaging is permitted.
This approach mitigates fingerprinting based on installed extensions.

Accomplish this by introducing a random delay for runtime.sendMessage() 
responses in error cases.
Also runtime.connect() now consistently returns a port, which is subsequently 
disconnected after
a random delay. Importantly, no errors are reported to the web page in any of 
these situations.

Also improved port bookkeeping by always sending the PortRemoved message (was 
PortDisconnect)
when the port is disconnected or garbage collected.

* Source/WebKit/Platform/cocoa/CocoaHelpers.h:
* Source/WebKit/Platform/cocoa/CocoaHelpers.mm:
(WebKit::callAfterRandomDelay): Added.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPortCocoa.mm:
(WebKit::WebExtensionContext::portRemoved): Added.
(WebKit::WebExtensionContext::portDisconnect): Deleted.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContext::runtimeWebPageSendMessage): Added work behind 
callAfterRandomDelay().
(WebKit::WebExtensionContext::runtimeWebPageConnect): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm:
(WebKit::WebExtensionMessagePort::disconnect): Move portRemoved() call to 
remove().
(WebKit::WebExtensionMessagePort::remove): Add call to portRemoved().
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIEventCocoa.mm:
(WebKit::WebExtensionAPIEvent::addListener): Check hasExtensionContext() before 
using extensionContext().
This was needed since the quarantined port has no extensionContext, and events 
it created don't as well.
(WebKit::WebExtensionAPIEvent::removeListener): Ditto.
(WebKit::WebExtensionAPIEvent::removeAllListeners): Ditto.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm:
(WebKit::WebExtensionAPIPort::add): ASSERT !isQuarantined(), since it should 
not be added to the map.
(WebKit::WebExtensionAPIPort::remove): Return early for isQuarantined(). Send 
PortRemoved here.
(WebKit::WebExtensionAPIPort::postMessage): Use renamed isDisconnected().
(WebKit::WebExtensionAPIPort::fireMessageEventIfNeeded): Return early for 
isQuarantined().
(WebKit::WebExtensionAPIPort::fireDisconnectEventIfNeeded): Moved 
PortDisconnect message to remove().
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionAPIWebPageRuntime::sendMessage): Respond after a random 
delay.
(WebKit::WebExtensionAPIWebPageRuntime::connect): Return a port, and disconnect 
after a random delay.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIObject.h:
(WebKit::WebExtensionAPIObject::hasExtensionContext const): Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h:
(WebKit::WebExtensionAPIPort::isDisconnected const): Added.
(WebKit::WebExtensionAPIPort::isQuarantined const): Added.
(WebKit::WebExtensionAPIPort::WebExtensionAPIPort): Added.
(WebKit::WebExtensionAPIPort::disconnected const): Deleted.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm:
(TEST(WKWebExtensionAPIRuntime, ConnectFromWebPageWithWrongIdentifier)): Added.
(TEST(WKWebExtensionAPIRuntime, SendMessageFromWebPageWithWrongIdentifier)): 
Added.

Canonical link

[webkit-changes] [WebKit/WebKit] 08b992: Support moving a Web Extension tab to and from WIN...

2024-02-28 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 08b9923002071e6d00a4a90607710fa07b61676d
  
https://github.com/WebKit/WebKit/commit/08b9923002071e6d00a4a90607710fa07b61676d
  Author: Timothy Hatcher 
  Date:   2024-02-28 (Wed, 28 Feb 2024)

  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/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  Support moving a Web Extension tab to and from WINDOW_ID_NONE.
https://webkit.org/b/270260
rdar://123102191

Reviewed by Brian Weinstein.

Safari needs to move tabs to and from WINDOW_ID_NONE when switching Tab Groups.
The existing didMoveTab:fromIndex:inWindow: method needed updated to support 
this,
and properly fire the tabs events.

Updated existing testing support to allow assigning nil to a tab's window.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(-[_WKWebExtensionContext didMoveTab:fromIndex:inWindow:]): Handle NSNotFound.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::didMoveTab): Enumerate all the possible move 
combos
when logging, and fire the appropriate events for for each possibility.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TEST(WKWebExtensionAPITabs, DetachAndAttachToWindowIDNone)): Added.
(TEST(WKWebExtensionAPITabs, DetachAndAttachFromWindowIDNone)): Added.
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h:
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionTab assignWindow:]): Added.
(-[TestWebExtensionTab setWindow:]): Added. Call didMoveTab:::.
(-[TestWebExtensionWindow removeTab:]): Added.
(-[TestWebExtensionWindow insertTab:atIndex:]): Added.
(-[TestWebExtensionWindow moveTab:toIndex:]): Use assignWindow:. And pass self
when the tab is moving in the same window.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 16d05a: Use privacyPreservingDescription() and always log ...

2024-02-28 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 16d05a3d74c72c170b84a8826c5121c680d2e23c
  
https://github.com/WebKit/WebKit/commit/16d05a3d74c72c170b84a8826c5121c680d2e23c
  Author: Timothy Hatcher 
  Date:   2024-02-28 (Wed, 28 Feb 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWindowsCocoa.mm
M 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/Cocoa/WebExtensionWindowCocoa.mm

  Log Message:
  ---
  Use privacyPreservingDescription() and always log NSErrors as %{public}@.
https://webkit.org/b/270234
rdar://problem/123771246

Reviewed by Brian Weinstein.

Use privacyPreservingDescription() wherever we log an NSError, and switch it to 
be %{public}@.
Also change some error strings in dNR to %{public}@ since they are not private 
error messages.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm:
(WebKit::WebExtensionContext::updateDeclarativeNetRequestRulesInStorage):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContext::runtimeOpenOptionsPage):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsCreate):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWindowsCocoa.mm:
(WebKit::WebExtensionContext::windowsCreate):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(-[_WKWebExtensionActionWebViewDelegate 
webView:didFailProvisionalNavigation:withError:]):
(-[_WKWebExtensionActionWebViewDelegate webView:didFailNavigation:withError:]):
(WebKit::WebExtensionAction::detectPopoverColorScheme):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::recordError):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::readStateFromPath):
(WebKit::WebExtensionContext::writeStateToStorage const):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::setParentTab):
(WebKit::WebExtensionTab::pin):
(WebKit::WebExtensionTab::unpin):
(WebKit::WebExtensionTab::toggleReaderMode):
(WebKit::WebExtensionTab::mute):
(WebKit::WebExtensionTab::unmute):
(WebKit::WebExtensionTab::setZoomFactor):
(WebKit::WebExtensionTab::detectWebpageLocale):
(WebKit::WebExtensionTab::captureVisibleWebpage):
(WebKit::WebExtensionTab::loadURL):
(WebKit::WebExtensionTab::reload):
(WebKit::WebExtensionTab::reloadFromOrigin):
(WebKit::WebExtensionTab::goBack):
(WebKit::WebExtensionTab::goForward):
(WebKit::WebExtensionTab::activate):
(WebKit::WebExtensionTab::select):
(WebKit::WebExtensionTab::deselect):
(WebKit::WebExtensionTab::duplicate):
(WebKit::WebExtensionTab::close):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm:
(WebKit::WebExtensionWindow::setState):
(WebKit::WebExtensionWindow::focus):
(WebKit::WebExtensionWindow::setFrame):
(WebKit::WebExtensionWindow::close):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 53b1e6: 1Password fails to load popup after focusing a for...

2024-02-28 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 53b1e6b7f02bbbc8a252792659963244ee04620f
  
https://github.com/WebKit/WebKit/commit/53b1e6b7f02bbbc8a252792659963244ee04620f
  Author: Timothy Hatcher 
  Date:   2024-02-28 (Wed, 28 Feb 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm

  Log Message:
  ---
  1Password fails to load popup after focusing a form field on a page.
https://webkit.org/b/270233
rdar://123423266

Reviewed by Jeff Miller and Brian Weinstein.

Once the input field is focused, 1Password creates an iframe with an extension 
document in the
tab. This causes two processes to have listeners for the runtime.onMessage 
event. That then
causes a race when sending messages, and the tab frame wins since the 
background replies async
after doing some work.

This was happening because the reply aggregator in the web process was sending 
a default null
reply, since the completion handler is always called, which was 
indistinguishable from a real
reply. Now we always send either null for default or at minimum an empty string 
for the JSON
reply, and the UI process skips the replies that are null strings. The 
aggregator on the UI
process side will then get the real reply or default to null later once it goes 
out of scope.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContext::runtimeSendMessage): Don't call 
callbackAggregator for null string.
(WebKit::WebExtensionContext::runtimeWebPageSendMessage): Ditto.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContextProxy::internalDispatchRuntimeMessageEvent): Ensure 
a real reply is
never null, so the completionHandler can make the distinction. Send default 
replies as null.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm:
(TEST(WKWebExtensionAPIRuntime, SendMessageWithTabFrameAndAsyncReply)): Added.
(TEST(WKWebExtensionAPIRuntime, 
SendMessageFromWebPageWithTabFrameAndAsyncReply)): Added.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] d2091f: Web Extension popup can present too soon.

2024-02-28 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d2091f38fe857c747e7eb84f0e2d7fe19aa6fd1c
  
https://github.com/WebKit/WebKit/commit/d2091f38fe857c747e7eb84f0e2d7fe19aa6fd1c
  Author: Timothy Hatcher 
  Date:   2024-02-28 (Wed, 28 Feb 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionAction.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm

  Log Message:
  ---
  Web Extension popup can present too soon.
https://webkit.org/b/270185
rdar://problem/123711867

Reviewed by Brian Weinstein.

Instead of starting the timer that presented the popup on the start of the load,
we should start it after the document has loaded and rendering will begin.

This prevents us from showing the popup while it might still be loading, and
causing it to resize mid-animation in most instances.

Also connect delegate methods for load fails to close the popup, so the web view
doesn't stick around indefinitely. Some API tests were failing to load because 
the
popup.html resource was missing.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(-[_WKWebExtensionActionWebViewDelegate 
webView:didFailProvisionalNavigation:withError:]):
(-[_WKWebExtensionActionWebViewDelegate webView:didFailNavigation:withError:]):
(-[_WKWebExtensionActionWebViewDelegate 
_webView:navigationDidFinishDocumentLoad:]):
(WebKit::WebExtensionAction::presentPopupWhenReady):
(WebKit::WebExtensionAction::popupDidFinishDocumentLoad):
(WebKit::WebExtensionAction::readyToPresentPopup):
* Source/WebKit/UIProcess/Extensions/WebExtensionAction.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm:
(TestWebKitAPI::TEST):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 75b646: Add NSPopover to _WKWebExtensionAction.

2024-02-27 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 75b646bd8fd82fcc3457d7c99efb23206a3617ca
  
https://github.com/WebKit/WebKit/commit/75b646bd8fd82fcc3457d7c99efb23206a3617ca
  Author: Timothy Hatcher 
  Date:   2024-02-27 (Tue, 27 Feb 2024)

  Changed paths:
M Source/WebKit/Platform/spi/mac/AppKitSPI.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionAction.h
M Tools/Scripts/webkitpy/style/checkers/cpp.py
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm

  Log Message:
  ---
  Add NSPopover to _WKWebExtensionAction.
https://webkit.org/b/270126
rdar://problem/123655122

Reviewed by Jeff Miller.

Also remove the ContentSizeDidChange and DidClose notifications, since those 
things
and handled internally now with the UIViewController and NSPopover paths.

Rename closePopupWebView to closePopup to also better align with the new 
approach.

* Source/WebKit/Platform/spi/mac/AppKitSPI.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm:
(-[_WKWebExtensionAction popupPopover]):
(-[_WKWebExtensionAction closePopup]):
(-[_WKWebExtensionAction closePopupWebView]): Deleted.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(-[_WKWebExtensionActionWebViewDelegate webViewWebContentProcessDidTerminate:]):
(-[_WKWebExtensionActionWebViewDelegate webViewDidClose:]):
(-[_WKWebExtensionActionViewController 
_viewControllerDismissalTransitionDidEnd:]):
(-[_WKWebExtensionActionPopover initWithWebExtensionAction:]):
(-[_WKWebExtensionActionPopover dealloc]):
(-[_WKWebExtensionActionPopover popoverWillClose:]):
(-[_WKWebExtensionActionPopover popoverDidClose:]):
(-[_WKWebExtensionActionPopover _otherPopoverWillShow:]):
(WebKit::WebExtensionAction::clearCustomizations):
(WebKit::WebExtensionAction::setPopupPath):
(WebKit::WebExtensionAction::popupPopover):
(WebKit::WebExtensionAction::setPopupPopoverAppearance):
(WebKit::WebExtensionAction::detectPopoverColorScheme):
(WebKit::WebExtensionAction::popupWebView):
(WebKit::WebExtensionAction::readyToPresentPopup):
(WebKit::WebExtensionAction::popupSizeDidChange):
(WebKit::WebExtensionAction::closePopup):
(WebKit::WebExtensionAction::popupDidClose): Deleted.
(WebKit::WebExtensionAction::closePopupWebView): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionAction.h:
(WebKit::WebExtensionAction::popupPopoverAppearance const):
* Tools/Scripts/webkitpy/style/checkers/cpp.py:
(check_identifier_name_in_declaration): Make an exception for _WK prefixed 
classes.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm:
(TestWebKitAPI::TEST):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] c210f6: Tapping locked 1Password icon in password field fa...

2024-02-26 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c210f6aba610272b3da3e48813257f160c55836f
  
https://github.com/WebKit/WebKit/commit/c210f6aba610272b3da3e48813257f160c55836f
  Author: Timothy Hatcher 
  Date:   2024-02-26 (Mon, 26 Feb 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIActionCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm

  Log Message:
  ---
  Tapping locked 1Password icon in password field fails to open popup.
https://webkit.org/b/270116
rdar://123647578

Reviewed by Brian Weinstein.

1Password calls the browser.openPopup() function when the extension is locked. 
This is failing
due to them not telling us what window or tab to use, instead they are relying 
on us using the
active window and tab. Currently we use the default action, which has no tab 
associated and
this causes Safari to fail to present the popup.

Always use the tab's action when handling browser.openPopup() with a windowID, 
or no arguments
(implying the frontmost window and active tab).

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIActionCocoa.mm:
(WebKit::WebExtensionContext::actionOpenPopup): Combine paths, so there is one 
final call to
the performAction method which will always have an associated tab.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm:
(TestWebKitAPI::TEST): Updated expected results for associatedTab.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] eb5c28: Add UIViewController to _WKWebExtensionAction.

2024-02-26 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: eb5c280e046344fc93ee454dce60690da5d75e7a
  
https://github.com/WebKit/WebKit/commit/eb5c280e046344fc93ee454dce60690da5d75e7a
  Author: Timothy Hatcher 
  Date:   2024-02-26 (Mon, 26 Feb 2024)

  Changed paths:
M Source/WebKit/Platform/spi/ios/UIKitSPI.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionAction.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm

  Log Message:
  ---
  Add UIViewController to _WKWebExtensionAction.
https://webkit.org/b/270099
rdar://121461105

Reviewed by Brian Weinstein.

The logic for popups is complex on iOS, we should vend a UIViewController 
instead of just the WKWebView.
This also overrides the viewport to accommodate desktop extenions better on 
mobile.

* Source/WebKit/Platform/spi/ios/UIKitSPI.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm:
(-[_WKWebExtensionAction popupViewController]):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(-[_WKWebExtensionActionWebViewDelegate initWithWebExtensionAction:]):
(-[_WKWebExtensionActionWebViewDelegate 
webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[_WKWebExtensionActionWebView 
initWithFrame:configuration:webExtensionAction:]):
(-[_WKWebExtensionActionWebView dealloc]):
(-[_WKWebExtensionActionWebView invalidateIntrinsicContentSize]):
(-[_WKWebExtensionActionWebView 
observeValueForKeyPath:ofObject:change:context:]):
(-[_WKWebExtensionActionWebView _contentSize]):
(-[_WKWebExtensionActionWebView _contentSizeDidChange]):
(-[_WKWebExtensionActionWebView _checkIfContentSizeStabilizedAndPresentPopup]):
(-[_WKWebExtensionActionViewController initWithWebExtensionAction:]):
(-[_WKWebExtensionActionViewController viewIsAppearing:]):
(-[_WKWebExtensionActionViewController 
adaptivePresentationStyleForPresentationController:traitCollection:]):
(-[_WKWebExtensionActionViewController 
presentationController:prepareAdaptivePresentationController:]):
(-[_WKWebExtensionActionViewController 
presentationController:viewControllerForAdaptivePresentationStyle:]):
(-[_WKWebExtensionActionViewController 
_viewControllerDismissalTransitionDidEnd:]):
(-[_WKWebExtensionActionViewController _updatePopoverContentSize]):
(-[_WKWebExtensionActionViewController 
_updateDetentForSheetPresentationController:]):
(-[_WKWebExtensionActionViewController _dismissPopup]):
(WebKit::WebExtensionAction::popupViewController):
(WebKit::WebExtensionAction::popupWebView):
(WebKit::WebExtensionAction::readyToPresentPopup):
(WebKit::WebExtensionAction::popupSizeDidChange):
(WebKit::WebExtensionAction::popupDidClose):
(WebKit::WebExtensionAction::closePopupWebView):
* Source/WebKit/UIProcess/Extensions/WebExtensionAction.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm:
(TestWebKitAPI::TEST): Check that popupViewController is non-null.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] dc20f3: _WKWebExtensionMessagePort is being deallocated on...

2024-02-23 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: dc20f3f73c6b9aa0da5523525031b6501436dc4d
  
https://github.com/WebKit/WebKit/commit/dc20f3f73c6b9aa0da5523525031b6501436dc4d
  Author: Timothy Hatcher 
  Date:   2024-02-23 (Fri, 23 Feb 2024)

  Changed paths:
M Source/WTF/wtf/PlatformHave.h
M Source/WTF/wtf/spi/cocoa/objcSPI.h
M Source/WebKit/Shared/Cocoa/WKObject.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.mm
M 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMatchPattern.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.mm

  Log Message:
  ---
  _WKWebExtensionMessagePort is being deallocated on a background thread.
https://webkit.org/b/270012
rdar://123529626

Reviewed by Darin Adler.

Introduce WK_OBJECT_DEALLOC_ON_MAIN_THREAD() and 
WK_OBJECT_DEALLOC_IMPL_ON_MAIN_THREAD()
macros that use _class_setCustomDeallocInitiation() to be able to dealloc on 
the main
thread for both ARC and non-ARC objects.

Start using these macros in the Web Extensions classes since they stopped using
WebCoreObjCScheduleDeallocateOnMainRunLoop(). All objects currently using the 
WebCore
dealloc helper can be switched over to use these new macros.

* Source/WTF/wtf/PlatformHave.h: Added HAVE_OBJC_CUSTOM_DEALLOC.
* Source/WTF/wtf/spi/cocoa/objcSPI.h: Added _class_setCustomDeallocInitiation 
and
_objc_deallocOnMainThreadHelper.
* Source/WebKit/Shared/Cocoa/WKObject.h: Added WK_OBJECT_DEALLOC_ON_MAIN_THREAD 
and
WK_OBJECT_DEALLOC_IMPL_ON_MAIN_THREAD.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm:
(-[_WKWebExtension dealloc]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm:
(-[_WKWebExtensionAction dealloc]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.mm:
(-[_WKWebExtensionCommand dealloc]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(-[_WKWebExtensionContext initForExtension:]):
(-[_WKWebExtensionContext dealloc]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.mm:
(-[_WKWebExtensionController dealloc]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.mm:
(-[_WKWebExtensionControllerConfiguration dealloc]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.mm:
(-[_WKWebExtensionDataRecord dealloc]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMatchPattern.mm:
(-[_WKWebExtensionMatchPattern initWithCoder:]):
(-[_WKWebExtensionMatchPattern encodeWithCoder:]):
(-[_WKWebExtensionMatchPattern copyWithZone:]):
(-[_WKWebExtensionMatchPattern dealloc]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.mm:
(-[_WKWebExtensionMessagePort dealloc]): Deleted.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 36c6dd: Safari is hanging on launch in WebExtension::resou...

2024-02-23 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 36c6dd79307be994ccb7ca9a819775c6e904564c
  
https://github.com/WebKit/WebKit/commit/36c6dd79307be994ccb7ca9a819775c6e904564c
  Author: Timothy Hatcher 
  Date:   2024-02-23 (Fri, 23 Feb 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm

  Log Message:
  ---
  Safari is hanging on launch in WebExtension::resourceFileURLForPath.
https://webkit.org/b/269972
rdar://123470286

Reviewed by Brian Weinstein.

Three things were happening here to cause the hang:

* The incorrect logic for checking null strings in `clearCustomizations()` was 
causing the
notification to fire all the time. When the action cleared, Ghostery would set 
custom icons
and an empty badge string again (likely detecting the change in results from 
browser.action
APIs.) This would cause rapid cycles of change and reset.

* The icon paths Ghostery uses start with a `/`. This was causing our 
`resourceFileURLForPath()`
function to truncate the file URL back to the root and return nil for the icons 
path. This caused
the action icon image to fail to load and show a blank icon.

* Not all of the action properties were properly tracking changes, always 
sending the changed
notification when nothing had changed.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(WebKit::WebExtensionAction::clearCustomizations): Correct the null string 
checks.
(WebKit::WebExtensionAction::setIconsDictionary): Early return if nothing 
changed.
(WebKit::WebExtensionAction::setHasUnreadBadgeText): Ditto.
(WebKit::WebExtensionAction::incrementBlockedResourceCount): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::resourceFileURLForPath): Remove prefix if present.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 7c0a7f: EmberJS Web Extension fails to detect Ember applic...

2024-02-21 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7c0a7f074ef28ce5047f221780989c47e18e763c
  
https://github.com/WebKit/WebKit/commit/7c0a7f074ef28ce5047f221780989c47e18e763c
  Author: Timothy Hatcher 
  Date:   2024-02-21 (Wed, 21 Feb 2024)

  Changed paths:
M Source/WebKit/Shared/Extensions/WebExtensionContentWorldType.h
M 
Source/WebKit/Shared/Extensions/WebExtensionContentWorldType.serialization.in
M Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h
M 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPortCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm

  Log Message:
  ---
  EmberJS Web Extension fails to detect Ember application.
https://webkit.org/b/269816
rdar://problem/123338506

Reviewed by Brian Weinstein.

DevTools extensions need to use a custom content world type, that is similar to
Main but distinct since it has less APIs. Previously we were just using the
ContentScript world type to limit the APIs. This prevented message passing
from being delivered properly to the Inspector pages.

We also need the pass the Inspector page, tab, and window identifiers to the
web process so browser.devtools.inspectedWindow.tabId returns the correct value.

* Source/WebKit/Shared/Extensions/WebExtensionContentWorldType.h:
(WebKit::toDebugString):
* Source/WebKit/Shared/Extensions/WebExtensionContentWorldType.serialization.in:
* Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h:
* 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in:
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPortCocoa.mm:
(WebKit::WebExtensionContext::portPostMessage):
(WebKit::WebExtensionContext::firePortDisconnectEventIfNeeded):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContext::runtimeSendMessage):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::inspectorPageIdentifiers const):
(WebKit::WebExtensionContext::wakeUpBackgroundContentIfNecessaryToFireEvents):
(WebKit::WebExtensionContext::loadInspectorBackgroundPage):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::parameters const):
(WebKit::WebExtensionContext::pageListensForEvent const):
(WebKit::WebExtensionContext::processes const):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::processes const):
(WebKit::WebExtensionContext::sendToProcessesForEvents const):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContextProxy::dispatchRuntimeMessageEvent):
(WebKit::WebExtensionContextProxy::dispatchRuntimeConnectEvent):
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm:
(WebKit::WebExtensionContextProxy::toDOMWrapperWorld):
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm:
(WebKit::WebExtensionControllerProxy::globalObjectIsAvailableForFrame):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp:
(WebKit::WebExtensionContextProxy::tabIdentifier const):
(WebKit::WebExtensionContextProxy::addInspectorPage):
(WebKit::WebExtensionContextProxy::addInspectorPageIdentifier):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm:
(TEST(WKWebExtensionAPIDevTools, MessagePassingToBackground)): Added.
(TEST(WKWebExtensionAPIDevTools, MessagePassingFromPanelToBackground)): Added.
(TEST(WKWebExtensionAPIDevTools, MessagePassingFromPanelToDevToolsBackground)): 
Added.
(TEST(WKWebExtensionAPIDevTools, PortMessagePassingToBackground)): Added.
(TEST(WKWebExtensionAPIDevTools, PortMessagePassingFromPanelToBackground)): 
Added.
(TEST(WKWebExtensionAPIDevTools, 
PortMessagePassingFromPanelToDevToolsBackground)): Added.

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



To unsubscribe from these emails, change

[webkit-changes] [WebKit/WebKit] 607817: Remove browser.test.testEvent and browser.test.fir...

2024-02-20 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 607817d6a54bd5803b8a719493511a70034a533e
  
https://github.com/WebKit/WebKit/commit/607817d6a54bd5803b8a719493511a70034a533e
  Author: Timothy Hatcher 
  Date:   2024-02-20 (Tue, 20 Feb 2024)

  Changed paths:
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITestCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITest.h
M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPITest.idl
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIEvent.mm

  Log Message:
  ---
  Remove browser.test.testEvent and browser.test.fireTestEvent().
https://webkit.org/b/269659
rdar://123173676

Reviewed by Brian Weinstein.

* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITestCocoa.mm:
(WebKit::WebExtensionAPITest::testEvent): Deleted.
(WebKit::WebExtensionAPITest::fireTestEvent): Deleted.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITest.h:
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPITest.idl:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIEvent.mm:
(TEST(WKWebExtensionAPIEvent, Errors)): Use browser.runtime.onStartup instead.
(TEST(WKWebExtensionAPIEvent, TestEventListener)): Ditto. Firing events is
tested plenty of times in other tests.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 948644: Remove testingMode from WebExtensionContext.

2024-02-19 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 948644e21eefcb6fdb3703d087b67c5d39e8a0c3
  
https://github.com/WebKit/WebKit/commit/948644e21eefcb6fdb3703d087b67c5d39e8a0c3
  Author: Timothy Hatcher 
  Date:   2024-02-19 (Mon, 19 Feb 2024)

  Changed paths:
M Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h
M 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContextPrivate.h
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPermissionsCocoa.mm
M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  Remove testingMode from WebExtensionContext.
https://webkit.org/b/269735
rdar://problem/123254659

Reviewed by Brian Weinstein.

testingMode was added to WebExtensionController, so it is no longer needed on 
WebExtensionContext.
Removing it prevents the context and controller from mismathcing.

* Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h:
* 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(-[_WKWebExtensionContext _inTestingMode]): Deleted.
(-[_WKWebExtensionContext _setTestingMode:]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContextPrivate.h:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::setTestingMode): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::parameters const):
(WebKit::WebExtensionContext::inTestingMode const):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::inTestingMode const): Deleted.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPermissionsCocoa.mm:
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm:
(WebKit::WebExtensionContextProxy::getOrCreate):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp:
(WebKit::WebExtensionContextProxy::inTestingMode const):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionManager initForExtension:extensionControllerConfiguration:]):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 1e5e28: Use Expected for error reporting in Web Extensions...

2024-02-19 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1e5e2883c8bda6ee86b1717947a226daed9f1437
  
https://github.com/WebKit/WebKit/commit/1e5e2883c8bda6ee86b1717947a226daed9f1437
  Author: Timothy Hatcher 
  Date:   2024-02-19 (Mon, 19 Feb 2024)

  Changed paths:
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Shared/Extensions/WebExtensionConstants.h
A Source/WebKit/Shared/Extensions/WebExtensionError.h
M Source/WebKit/Shared/Extensions/WebExtensionFrameIdentifier.h
M Source/WebKit/Shared/Extensions/WebExtensionUtilities.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIActionCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIAlarmsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsInspectedWindow.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsPanels.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIMenusCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIStorageCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWebNavigationCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWindowsCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
M Source/WebKit/UIProcess/Extensions/WebExtensionController.h
M Source/WebKit/UIProcess/Extensions/WebExtensionController.messages.in
M Source/WebKit/UIProcess/Extensions/WebExtensionDynamicScripts.h
M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h
M Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIActionCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIAlarmsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPICommandsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPICookiesCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDeclarativeNetRequestCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionPanelCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsPanelsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIMenusCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPermissionsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIScriptingCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebNavigationCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIScripting.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWindows.mm

  Log Message:
  ---
  Use Expected for error reporting in Web Extensions completionHandlers.
https://webkit.org/b/269681
rdar://123199880

Reviewed by Brian Weinstein.

Instead of using std::optional for errors, and std::optional for the
real result, wrap them together with Expected to be more efficient.

Also use r-value references for these results, so the result is moved instead
of copied when the completionHandler is called.

Added two helper templates for toWebAPI that that return nil

[webkit-changes] [WebKit/WebKit] 601dbe: NEW TEST (274589@main): [ macOS ] TestWebKitAPI.WK...

2024-02-19 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 601dbe0a8712cfebad40ef68b02088cf271d4f65
  
https://github.com/WebKit/WebKit/commit/601dbe0a8712cfebad40ef68b02088cf271d4f65
  Author: Timothy Hatcher 
  Date:   2024-02-19 (Mon, 19 Feb 2024)

  Changed paths:
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm

  Log Message:
  ---
  NEW TEST (274589@main): [ macOS ] 
TestWebKitAPI.WKWebExtensionAPIDevTools.CreatePanel is a consistent timeout
https://webkit.org/b/269402
rdar://problem/122967271

Reviewed by Brian Weinstein.

Fix a race condition between showing the panel, and the panel frame loading.
The frame was not loading fast enough on the bots, and locally it would load
slow about 20% of the time.

* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm:
(TEST(WKWebExtensionAPIDevTools, CreatePanel)): Move test.yield() to the panel
script, so it happens after the window.notifyHidden function is set.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] b891aa: WKWebExtensionAPIScripting.InsertAndRemoveCSSWithF...

2024-02-19 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b891aa9d845db409b56539f3862112348284c65b
  
https://github.com/WebKit/WebKit/commit/b891aa9d845db409b56539f3862112348284c65b
  Author: Timothy Hatcher 
  Date:   2024-02-19 (Mon, 19 Feb 2024)

  Changed paths:
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  ---
  WKWebExtensionAPIScripting.InsertAndRemoveCSSWithFrameIds is flaky.
https://webkit.org/b/268387
rdar://problem/121934255

Reviewed by Brian Weinstein.

Wait for the tabs to load before tryign ti insert CSS and evaluate script.

* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm:
(TEST(WKWebExtensionAPIScripting, InsertAndRemoveCSS)): Move work inside 
browser.tabs.onUpdate.
(TEST(WKWebExtensionAPIScripting, InsertAndRemoveCSSWithFrameIds)): Ditto.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TEST(WKWebExtensionAPITabs, InsertAndRemoveCSSInMainFrame)): Move work inside 
browser.tabs.onUpdate.
(TEST(WKWebExtensionAPITabs, InsertAndRemoveCSSInAllFrames)): Ditto.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 786fc3: Crash in WebExtensionContext::addListener when Web...

2024-02-16 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 786fc33388fb10648646e930125e2e1fa444a022
  
https://github.com/WebKit/WebKit/commit/786fc33388fb10648646e930125e2e1fa444a022
  Author: Timothy Hatcher 
  Date:   2024-02-16 (Fri, 16 Feb 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIEventCocoa.mm

  Log Message:
  ---
  Crash in WebExtensionContext::addListener when Web Extension does not have a 
background page.
https://webkit.org/b/269543
rdar://123052586

Reviewed by David Kilzer.

Make sure m_backgroundWebView is not nil before accessing _page->identifier().

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIEventCocoa.mm:
(WebKit::WebExtensionContext::addListener):
(WebKit::WebExtensionContext::removeListener):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ec5b31: Add support for themeName and onThemeChanged for d...

2024-02-15 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ec5b31644d06ea268cd38c3ffb6593fc1e91d47f
  
https://github.com/WebKit/WebKit/commit/ec5b31644d06ea268cd38c3ffb6593fc1e91d47f
  Author: Timothy Hatcher 
  Date:   2024-02-15 (Thu, 15 Feb 2024)

  Changed paths:
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Shared/InspectorExtensionTypes.h
M Source/WebKit/Shared/InspectorExtensionTypes.serialization.in
M Source/WebKit/UIProcess/API/APIInspectorExtensionClient.h
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M 
Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp
M Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h
M Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.cpp
M Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.h
M Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.messages.in
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsPanelsCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsPanels.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
M Source/WebKit/WebProcess/Inspector/WebInspectorUI.cpp
M Source/WebKit/WebProcess/Inspector/WebInspectorUI.h
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm

  Log Message:
  ---
  Add support for themeName and onThemeChanged for devtools Web Extensions.
https://webkit.org/b/246485
rdar://problem/114823326

Reviewed by Brian Weinstein.

* Source/WebKit/Scripts/webkit/messages.py:
(types_that_cannot_be_forward_declared):
(headers_for_type):
* Source/WebKit/Shared/InspectorExtensionTypes.h:
* Source/WebKit/Shared/InspectorExtensionTypes.serialization.in:
* Source/WebKit/UIProcess/API/APIInspectorExtensionClient.h:
(API::InspectorExtensionClient::effectiveAppearanceDidChange):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::loadInspectorBackgroundPage): Hook up the new 
client function.
(WebKit::WebExtensionContext::inspectorEffectiveAppearanceDidChange): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:
(WebKit::WebInspectorUIExtensionControllerProxy::effectiveAppearanceDidChange): 
Added.
* Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:
* Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.cpp:
(WebKit::WebInspectorUIProxy::effectiveAppearanceDidChange): Added.
* Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.h:
* Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.messages.in:
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsPanelsCocoa.mm:
(WebKit::WebExtensionAPIDevToolsPanels::themeName): Implemneted.
(WebKit::WebExtensionContextProxy::dispatchDevToolsPanelsThemeChangedEvent):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsPanels.h:
(WebKit::WebExtensionAPIDevToolsPanels::theme const): Added.
(WebKit::WebExtensionAPIDevToolsPanels::setTheme): Added.
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in:
* Source/WebKit/WebProcess/Inspector/WebInspectorUI.cpp:
(WebKit::WebInspectorUI::effectiveAppearanceDidChange): Added.
* Source/WebKit/WebProcess/Inspector/WebInspectorUI.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::effectiveAppearanceDidChange): Added.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm:
(TEST(WKWebExtensionAPIDevTools, PanelsThemeName)): Added.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 7900c6: Exception in WebKit::WebExtensionTab::processes().

2024-02-14 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7900c68de6a3191a59ddff3938d08e3334189187
  
https://github.com/WebKit/WebKit/commit/7900c68de6a3191a59ddff3938d08e3334189187
  Author: Timothy Hatcher 
  Date:   2024-02-14 (Wed, 14 Feb 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm

  Log Message:
  ---
  Exception in WebKit::WebExtensionTab::processes().
https://webkit.org/b/269409
rdar://122974809

Reviewed by Jeff Miller and Brian Weinstein.

When mainWebView() is nil, we need to be careful. Use [NSArray 
arrayWithObjects:]
instead of [NSArray arrayWithObject:] since that will make a zero item array
if the web view is nil, instead of throwing an exception.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::processes const):

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 886077: Add support for the devtools.network.onNavigated W...

2024-02-14 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 886077e077a496a6e398df52a4b7915d8cd68f76
  
https://github.com/WebKit/WebKit/commit/886077e077a496a6e398df52a4b7915d8cd68f76
  Author: Timothy Hatcher 
  Date:   2024-02-14 (Wed, 14 Feb 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsNetworkCocoa.mm
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm

  Log Message:
  ---
  Add support for the devtools.network.onNavigated Web Extension event.
https://webkit.org/b/246485
rdar://problem/114823326

Reviewed by BJ Burg.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::loadInspectorBackgroundPage): Connect client to 
inspectedPageDidNavigate.
(WebKit::WebExtensionContext::inspectedPageDidNavigate): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsNetworkCocoa.mm:
(WebKit::WebExtensionContextProxy::dispatchDevToolsNetworkNavigatedEvent):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm:
(TEST(WKWebExtensionAPIDevTools, NetworkNavigatedEvent)): Added.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] bbc211: Add support for the devtools.inspectedWindow Web E...

2024-02-14 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bbc211140430e58da5821a8e87d1f6736a984929
  
https://github.com/WebKit/WebKit/commit/bbc211140430e58da5821a8e87d1f6736a984929
  Author: Timothy Hatcher 
  Date:   2024-02-14 (Wed, 14 Feb 2024)

  Changed paths:
M 
Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js
M Source/WebKit/Shared/InspectorExtensionTypes.h
M Source/WebKit/UIProcess/API/APIInspectorExtension.cpp
M Source/WebKit/UIProcess/API/APIInspectorExtension.h
M Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.mm
A 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsInspectedWindow.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsPanels.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
M 
Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp
M Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsInspectedWindow.h
M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsInspectedWindow.idl
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm

  Log Message:
  ---
  Add support for the devtools.inspectedWindow Web Extension APIs.
https://webkit.org/bug/246485
rdar://problem/114823326

Reviewed by Jeff Miller and BJ Burg.

Adds support for the eval() and reload() functions on devtools.inspectedWindow.
This is primarily implemented by API::InspectorExtension and Inspector code.

This implementation of eval() properly returns the result as an array of two 
values,
the result and error, like Chrome and Firefox. The Safari implementation just 
returned
the result and never provided the exception details.

Also removed the plumbing for reload to return a evaluation result. This was 
never the
case, and the Web Extension spec does not provide a result.

* 
Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:
(WI.WebInspectorExtensionController.prototype.async evaluateScriptForExtension):
(WI.WebInspectorExtensionController.prototype.reloadForExtension): Don't use an 
eval result
since reload does not provide a result to Web Extensions.
* Source/WebKit/Shared/InspectorExtensionTypes.h: Use Ref instead of RefPtr.
* Source/WebKit/UIProcess/API/APIInspectorExtension.cpp:
(API::InspectorExtension::reloadIgnoringCache):
* Source/WebKit/UIProcess/API/APIInspectorExtension.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.mm:
(-[_WKInspectorExtension 
reloadIgnoringCache:userAgent:injectedScript:completionHandler:]):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsInspectedWindow.mm:
 Added.
(WebKit::WebExtensionContext::devToolsInspectedWindowEval):
(WebKit::WebExtensionContext::devToolsInspectedWindowReload):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsPanels.mm:
(WebKit::WebExtensionContext::devToolsPanelsCreate):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:
(WebKit::WebInspectorUIExtensionControllerProxy::evaluateScriptForExtension):
(WebKit::WebInspectorUIExtensionControllerProxy::reloadForExtension):
(WebKit::WebInspectorUIExtensionControllerProxy::evaluateScriptInExtensionTab):
* Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm:
(WebKit::WebExtensionAPIDevToolsInspectedWindow::eval):
(WebKit::WebExtensionAPIDevToolsInspectedWindow::reload):
* 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsInspectedWindow.h:
* 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsInspectedWindow.idl:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm:
(TEST(WKWebExtensionAPIDevTools, InspectedWindowEval)): Added.
(TEST(WKWebExtensionAPIDevTools, InspectedWindowReload)): Added.
(TEST(WKWebExtensionAPIDevTools, InspectedWindowReloadIgnoringCache)): Added.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 553a55: Add support for creating panels in the Web Extensi...

2024-02-13 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 553a55c37606ca6bce4630ca93b72e9354d1a25d
  
https://github.com/WebKit/WebKit/commit/553a55c37606ca6bce4630ca93b72e9354d1a25d
  Author: Timothy Hatcher 
  Date:   2024-02-13 (Tue, 13 Feb 2024)

  Changed paths:
M Source/WebKit/Scripts/webkit/messages.py
A 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsPanels.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionURLSchemeHandlerCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
M Source/WebKit/UIProcess/Extensions/WebExtensionController.h
M Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebProcessPool.cpp
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionPanelCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsNetworkCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsPanelsCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsPanels.h
M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsPanels.idl
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm

  Log Message:
  ---
  Add support for creating panels in the Web Extension devtools background page.
https://webkit.org/b/246485
rdar://problem/114823326

Reviewed by Jeff Miller.

This adds support for browser.devtools.panels.create() and firing the onShown 
and
onHidden events on those panels when they are shown / hidden in Web Inspector.

This requires loading the devtools background page in the same process as Web 
Inspector,
since we need to pass the window object of the new panel's frame to the onShown 
listeners.

Added a new test that exercise this end-to-end. We also have 
WKInspectorExtension API
tests that test this separate from the Web Extensions tests.

* Source/WebKit/Scripts/webkit/messages.py:
(types_that_cannot_be_forward_declared):
(headers_for_type):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsPanels.mm:
 Added.
(WebKit::WebExtensionContext::devToolsPanelsCreate):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::webViewConfiguration):
(WebKit::WebExtensionContext::openInspectors const):
(WebKit::WebExtensionContext::inspectorExtension const):
(WebKit::WebExtensionContext::inspector const):
(WebKit::WebExtensionContext::processes const):
(WebKit::WebExtensionContext::loadInspectorBackgroundPage):
(WebKit::WebExtensionContext::unloadInspectorBackgroundPage):
(WebKit::WebExtensionContext::didShowInspectorExtensionPanel const):
(WebKit::WebExtensionContext::didHideInspectorExtensionPanel const):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionURLSchemeHandlerCocoa.mm:
(WebKit::WebExtensionURLSchemeHandler::platformStartTask):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::sendToProcesses const):
(WebKit::WebExtensionContext::sendToProcessesForEvent const):
(WebKit::WebExtensionContext::sendToProcessesForEvents const):
(WebKit::WebExtensionContext::sendToContentScriptProcessesForEvent const):
(WebKit::WebExtensionContext::sendToProcesses): Deleted.
(WebKit::WebExtensionContext::sendToProcessesForEvent): Deleted.
(WebKit::WebExtensionContext::sendToProcessesForEvents): Deleted.
(WebKit::WebExtensionContext::sendToContentScriptProcessesForEvent): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/UIProcess/Extensions/WebExtensionController.h:
* Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm:
(-[WKInspectorViewController webViewConfiguration]):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigationInternal):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsCocoa.mm:
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionPanelCocoa.mm:
(WebKit::WebExtensionAPIDevToolsExtensionPanel::onHidden):
(WebKit::WebExtensionContextProxy::dispatchDevToolsExtensionPanelShownEvent):
(WebKit::WebExtensionContextProxy::dispatchDevToolsExtensionPanelHiddenEvent):
* 
Source/WebKit/WebProcess

[webkit-changes] [WebKit/WebKit] 0b519b: Add support for loading and connecting the Web Ext...

2024-02-12 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0b519b877420bd9b534b8ca4b8341952ab698208
  
https://github.com/WebKit/WebKit/commit/0b519b877420bd9b534b8ca4b8341952ab698208
  Author: Timothy Hatcher 
  Date:   2024-02-12 (Mon, 12 Feb 2024)

  Changed paths:
M Source/WebKit/Shared/Extensions/WebExtensionConstants.h
M Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h
M 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtension.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionController.h
M Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.cpp
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsInspectedWindow.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h
M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsInspectedWindow.idl
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
M Tools/TestWebKitAPI/SourcesCocoa.txt
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
A Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewSuspendAllMediaPlayback.mm
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  Add support for loading and connecting the Web Extension devtools background 
page.
https://webkit.org/b/246485
rdar://problem/114823326

Reviewed by Jeff Miller.

Hook up loading the devtools_page when Web Inspector opens, or an extension is 
loaded
when Inspectors are already open during load, or private browsing is toggled.

* Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h:
* 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::hasInspectorBackgroundPage):
(WebKit::WebExtension::inspectorBackgroundPagePath):
(WebKit::WebExtension::populateInspectorPropertiesIfNeeded):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::load):
(WebKit::WebExtensionContext::setHasAccessInPrivateBrowsing):
(WebKit::WebExtensionContext::inspectorBackgroundPageIdentifiers const):
(WebKit::WebExtensionContext::decidePolicyForNavigationAction):
(WebKit::WebExtensionContext::webViewWebContentProcessDidTerminate):
(WebKit::WebExtensionContext::inspectorBackgroundPageURL const):
(WebKit::WebExtensionContext::openInspectors const):
(WebKit::WebExtensionContext::loadedInspectors const):
(WebKit::WebExtensionContext::isInspectorBackgroundPage const):
(WebKit::WebExtensionContext::loadInspectorBackgroundPagesDuringLoad):
(WebKit::WebExtensionContext::unloadInspectorBackgroundPages):
(WebKit::WebExtensionContext::loadInspectorBackgroundPagesForPrivateBrowsing):
(WebKit::WebExtensionContext::unloadInspectorBackgroundPagesForPrivateBrowsing):
(WebKit::WebExtensionContext::loadInspectorBackgroundPage):
(WebKit::WebExtensionContext::unloadInspectorBackgroundPage):
(WebKit::WebExtensionContext::inspectorWillOpen):
(WebKit::WebExtensionContext::inspectorWillClose):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::load):
(WebKit::WebExtensionController::unload):
(WebKit::WebExtensionController::unloadAll):
(WebKit::WebExtensionController::addProcessPool):
(WebKit::WebExtensionController::removeProcessPool):
(WebKit::WebExtensionController::addUserContentController):
(WebKit::WebExtensionController::removeUserContentController):
(WebKit::WebExtensionController::removeWebsiteDataStore):
(WebKit::WebExtensionController::cookiesDidChange):
(WebKit::WebExtensionController::extensionContext const):
(WebKit::WebExtensionController::extensions const):
(WebKit::WebExtensionController::addItemsToContextMenu):
(WebKit::WebExtensionController::didStartProvisionalLoadForFrame):
(WebKit::WebExtensionController::didCommitLoadForFrame):
(WebKit

[webkit-changes] [WebKit/WebKit] 123998: WebExtensionMatchPattern::registerCustomURLScheme(...

2024-02-12 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1239980cbe3eba753efc1b6dfe92b61e80cd99fc
  
https://github.com/WebKit/WebKit/commit/1239980cbe3eba753efc1b6dfe92b61e80cd99fc
  Author: Timothy Hatcher 
  Date:   2024-02-12 (Mon, 12 Feb 2024)

  Changed paths:
M Source/WebKit/Shared/WebProcessCreationParameters.h
M Source/WebKit/Shared/WebProcessCreationParameters.serialization.in
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm
M Source/WebKit/UIProcess/WebProcessPool.cpp
M Source/WebKit/WebProcess/WebProcess.cpp
M Source/WebKit/WebProcess/WebProcess.h
M Source/WebKit/WebProcess/WebProcess.messages.in
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIPermissions.mm

  Log Message:
  ---
  WebExtensionMatchPattern::registerCustomURLScheme() needs to register in the 
web processes.
https://webkit.org/b/261292
rdar://problem/115136557

Reviewed by Jeff Miller.

* Source/WebKit/Shared/WebProcessCreationParameters.h:
* Source/WebKit/Shared/WebProcessCreationParameters.serialization.in:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm:
(WebKit::WebExtensionMatchPattern::registerCustomURLScheme): Tell the processes.
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::initializeNewWebProcess): Add registered extension 
schemes.
* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess): Call 
WebExtensionMatchPattern::registerCustomURLScheme.
(WebKit::WebProcess::registerURLSchemeAsWebExtension const): Added.
* Source/WebKit/WebProcess/WebProcess.h:
* Source/WebKit/WebProcess/WebProcess.messages.in:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIPermissions.mm:
(TEST(WKWebExtensionAPIPermissions, ValidMatchPatterns)): Added.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] e02fde: Remove some unsupported devTools Web Extensions APIs.

2024-02-12 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e02fdeb1b6033c97951d2a1f8ccf88c5a63d7c38
  
https://github.com/WebKit/WebKit/commit/e02fdeb1b6033c97951d2a1f8ccf88c5a63d7c38
  Author: Timothy Hatcher 
  Date:   2024-02-12 (Mon, 12 Feb 2024)

  Changed paths:
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
R 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsElementsPanelCocoa.mm
R 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionSidebarPaneCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsNetworkCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsPanelsCocoa.mm
R 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsElementsPanel.h
R 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsExtensionSidebarPane.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsNetwork.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsPanels.h
R 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsElementsPanel.idl
R 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsExtensionSidebarPane.idl
M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsInspectedWindow.idl
M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsNetwork.idl
M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsPanels.idl

  Log Message:
  ---
  Remove some unsupported devTools Web Extensions APIs.
https://webkit.org/b/269200
rdar://problem/122806817

Reviewed by Jeff Miller.

These were just empty stubs in Safari, we should not ship them in WebKit.

* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsElementsPanelCocoa.mm:
 Removed.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionSidebarPaneCocoa.mm:
 Removed.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm:
(WebKit::WebExtensionAPIDevToolsInspectedWindow::isPropertyAllowed): Deleted.
(WebKit::WebExtensionAPIDevToolsInspectedWindow::getResources): Deleted.
(WebKit::WebExtensionAPIDevToolsInspectedWindow::onResourceAdded): Deleted.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsNetworkCocoa.mm:
(WebKit::WebExtensionAPIDevToolsNetwork::getHAR): Deleted.
(WebKit::WebExtensionAPIDevToolsNetwork::onRequestFinished): Deleted.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsPanelsCocoa.mm:
(WebKit::WebExtensionAPIDevToolsPanels::elements): Deleted.
* 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsElementsPanel.h: 
Removed.
* 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsExtensionSidebarPane.h:
 Removed.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsNetwork.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsPanels.h:
* 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsElementsPanel.idl:
 Removed.
* 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsExtensionSidebarPane.idl:
 Removed.
* 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsInspectedWindow.idl:
* 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsNetwork.idl:
* 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsPanels.idl:

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] a3e842: Messages sent to a Web Extension port should not b...

2024-02-09 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a3e8427b4707498583267f2f0b9f42f82ec0f30a
  
https://github.com/WebKit/WebKit/commit/a3e8427b4707498583267f2f0b9f42f82ec0f30a
  Author: Timothy Hatcher 
  Date:   2024-02-09 (Fri, 09 Feb 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPortCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  ---
  Messages sent to a Web Extension port should not be delivered to itself.
https://webkit.org/b/269049
rdar://122583434

Reviewed by Brian Weinstein.

Track the port's owning page proxy identifier, to identify the sending page, and
then prevent ports from delivering a message to its own page. This was causing a
loop because the ports array in the same extension web process had both the 
sender
and receiver port. Also make sure the port's sender is null when it is the port
returned by calling tabs.connect() or runtime.connect().

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPortCocoa.mm:
(WebKit::WebExtensionContext::portPostMessage):
(WebKit::WebExtensionContext::fireQueuedPortMessageEventsIfNeeded):
(WebKit::WebExtensionContext::sendQueuedNativePortMessagesIfNeeded):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm:
(WebKit::WebExtensionMessagePort::sendMessage):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm:
(WebKit::WebExtensionAPIPort::postMessage):
(WebKit::WebExtensionContextProxy::dispatchPortMessageEvent):
(WebKit::WebExtensionContextProxy::dispatchPortDisconnectEvent):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionAPIRuntime::sendMessage):
(WebKit::WebExtensionAPIRuntime::connect):
(WebKit::WebExtensionAPIRuntime::connectNative):
(WebKit::WebExtensionContextProxy::internalDispatchRuntimeConnectEvent):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm:
(WebKit::WebExtensionAPITabs::sendMessage):
(WebKit::WebExtensionAPITabs::connect):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h:
(WebKit::WebExtensionAPIPort::owningPageProxyIdentifier const): Added.
(WebKit::WebExtensionAPIPort::senderParameters const): Added.
(WebKit::WebExtensionAPIPort::WebExtensionAPIPort):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm:
(TEST(WKWebExtensionAPIRuntime, ConnectFromPopup)): Added.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST): Added sender checks.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 12dd6b: [Cocoa] EME with encrypted MPEG2-TS fails to begin...

2024-02-09 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 12dd6bd4eb2d527989f4502c701e01f5121e8d75
  
https://github.com/WebKit/WebKit/commit/12dd6bd4eb2d527989f4502c701e01f5121e8d75
  Author: Timothy Hatcher 
  Date:   2024-02-09 (Fri, 09 Feb 2024)

  Changed paths:
A 
LayoutTests/http/tests/media/fairplay/content/elementary-stream-video-keyid-1.ts
A LayoutTests/http/tests/media/fairplay/fps-mse-unmuxed-mpts-expected.txt
A LayoutTests/http/tests/media/fairplay/fps-mse-unmuxed-mpts.html
M LayoutTests/platform/mac/TestExpectations
M Source/WTF/wtf/PlatformHave.h
M Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.cpp
M Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.h
M 
Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm
M Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm
M 
Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm

  Log Message:
  ---
  [Cocoa] EME with encrypted MPEG2-TS fails to begin playback
https://bugs.webkit.org/show_bug.cgi?id=268948
rdar://122030589

Reviewed by Andy Estes.

When encrypted samples are parsed from containers by AVStreamDataParser, those 
samples have
their associated initialization data attached to their CMFormatDescription as 
extensions.
WebKit then reads those initialization data from the format description to 
determine the
keyID needed to decrypt that key. For MPEG2-TS files, the initialization data 
is stored
in a different key/value pair. Explicitly support this initData type as 'mpts'.

* 
LayoutTests/http/tests/media/fairplay/content/elementary-stream-video-keyid-1.ts:
 Added.
* LayoutTests/http/tests/media/fairplay/fps-mse-unmuxed-mpts.html: Added.
* Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsSinf):
(WebCore::CDMPrivateFairPlayStreaming::mptsName):
(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsMpts):
(WebCore::CDMPrivateFairPlayStreaming::sanitizeMpts):
(WebCore::CDMPrivateFairPlayStreaming::mptsKeyIDs):
(WebCore::validInitDataTypes):
(WebCore::CDMFactory::platformRegisterFactories):
(WebCore::CDMPrivateFairPlayStreaming::supportsInitData const):
* Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.h:
* 
Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::keyIDsForRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestLicense):
* Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
(WebCore::MediaSampleAVFObjC::commonInit):
* 
Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] bc58f4: Crash when closing DashLane extension popup.

2024-02-08 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bc58f493f50e6787944a0044979ea5a58b223b9a
  
https://github.com/WebKit/WebKit/commit/bc58f493f50e6787944a0044979ea5a58b223b9a
  Author: Timothy Hatcher 
  Date:   2024-02-08 (Thu, 08 Feb 2024)

  Changed paths:
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h

  Log Message:
  ---
  Crash when closing DashLane extension popup.
https://webkit.org/b/269041
rdar://problem/122599318

Reviewed by Alex Christensen.

* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h:
(WebKit::WebExtensionAPIPort::~WebExtensionAPIPort):
Set m_disconnected to true to prevent the disconnect event from firing.
We can't call into JavaScript during garbage collection.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 30e54a: Open links to external URLs in an action popup in ...

2024-02-08 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 30e54aa959476ab18f558e3f5c6cf8ea8aaef965
  
https://github.com/WebKit/WebKit/commit/30e54aa959476ab18f558e3f5c6cf8ea8aaef965
  Author: Timothy Hatcher 
  Date:   2024-02-08 (Thu, 08 Feb 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm

  Log Message:
  ---
  Open links to external URLs in an action popup in a new tab.
https://webkit.org/b/269020
rdar://122110236

Reviewed by Brian Weinstein.

When a link is targeting a new widow or trying to navigate to a non-extension 
URL in the main
frame, use the tabs delegate to open a new tab at the index after the current 
tab.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsCreate): Make the WebPageProxyIdentifier 
optional, since it isn't
always needed and will default to the current window if it is missing.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(-[_WKWebExtensionActionWebViewDelegate 
webView:decidePolicyForNavigationAction:decisionHandler:]):
Use openNewTab() to open the target URL in a tab.
(-[_WKWebExtensionActionWebViewDelegate 
webViewWebContentProcessDidTerminate:]): Null check.
(-[_WKWebExtensionActionWebViewDelegate webViewDidClose:]): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::openNewTab): Added. Simple wrapper around 
tabsCreate().
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm:
(TEST(WKWebExtensionAPIAction, NavigationOpensInNewTab)): Added new test.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 91a979: Add interfaces and stubs for the Web Extensions De...

2024-02-08 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 91a979be6c857b0b172fb41e31c80d18bf9d26f3
  
https://github.com/WebKit/WebKit/commit/91a979be6c857b0b172fb41e31c80d18bf9d26f3
  Author: Timothy Hatcher 
  Date:   2024-02-08 (Thu, 08 Feb 2024)

  Changed paths:
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
A 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsCocoa.mm
A 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsElementsPanelCocoa.mm
A 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionPanelCocoa.mm
A 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionSidebarPaneCocoa.mm
A 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm
A 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsNetworkCocoa.mm
A 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsPanelsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm
A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevTools.h
A 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsElementsPanel.h
A 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsExtensionPanel.h
A 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsExtensionSidebarPane.h
A 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsInspectedWindow.h
A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsNetwork.h
A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsPanels.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorage.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindows.h
M 
Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm
A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevTools.idl
A 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsElementsPanel.idl
A 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsExtensionPanel.idl
A 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsExtensionSidebarPane.idl
A 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsInspectedWindow.idl
A 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsNetwork.idl
A 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsPanels.idl
M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl

  Log Message:
  ---
  Add interfaces and stubs for the Web Extensions DevTools APIs.
https://webkit.org/b/246485
rdar://problem/114823326

Reviewed by Brian Weinstein.

* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsCocoa.mm: 
Added.
(WebKit::WebExtensionAPIDevTools::inspectedWindow):
(WebKit::WebExtensionAPIDevTools::network):
(WebKit::WebExtensionAPIDevTools::panels):
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsElementsPanelCocoa.mm:
 Added.
(WebKit::WebExtensionAPIDevToolsElementsPanel::createSidebarPane):
(WebKit::WebExtensionAPIDevToolsElementsPanel::onSelectionChanged):
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionPanelCocoa.mm:
 Added.
(WebKit::WebExtensionAPIDevToolsExtensionPanel::onShown):
(WebKit::WebExtensionAPIDevToolsExtensionPanel::onHidden):
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionSidebarPaneCocoa.mm:
 Added.
(WebKit::WebExtensionAPIDevToolsExtensionSidebarPane::setPage):
(WebKit::WebExtensionAPIDevToolsExtensionSidebarPane::setExpression):
(WebKit

[webkit-changes] [WebKit/WebKit] 153a79: Crash at com.apple.WebKit: WebKit::WebExtensionCon...

2024-02-07 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 153a7995798830acddfc99d26d0a087a5f3de1fa
  
https://github.com/WebKit/WebKit/commit/153a7995798830acddfc99d26d0a087a5f3de1fa
  Author: Timothy Hatcher 
  Date:   2024-02-07 (Wed, 07 Feb 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionAction.h

  Log Message:
  ---
  Crash at com.apple.WebKit: WebKit::WebExtensionController::wrapper().
https://webkit.org/b/268943
rdar://122480360

Reviewed by Brian Weinstein.

Add null checks for the extension controller, since the extension context
might not be loaded yet, or has since unloaded.

Also we can't cache if the delegate responds to the present method, since
the extension controller can change or the delegate can change. Also check
immediately before it is used.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(WebKit::WebExtensionAction::WebExtensionAction): Don't cache the responds 
result.
(WebKit::WebExtensionAction::fallbackAction const): Add null check for 
consistency.
(WebKit::WebExtensionAction::canProgrammaticallyPresentPopup const): Added.
(WebKit::WebExtensionAction::presentPopupWhenReady): Check 
canProgrammaticallyPresentPopup().
(WebKit::WebExtensionAction::readyToPresentPopup): Check delegate and null 
check controller.
* Source/WebKit/UIProcess/Extensions/WebExtensionAction.h:

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 23ef21: ASSERT traversing frames under WebExtensionContext...

2024-02-06 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 23ef211d3842b6d030c4f961ddf26a83a27b56ae
  
https://github.com/WebKit/WebKit/commit/23ef211d3842b6d030c4f961ddf26a83a27b56ae
  Author: Timothy Hatcher 
  Date:   2024-02-06 (Tue, 06 Feb 2024)

  Changed paths:
M Source/WebKit/Shared/API/APIFrameHandle.h
M Source/WebKit/UIProcess/API/APIFrameInfo.cpp
M Source/WebKit/UIProcess/API/APIFrameTreeNode.h

  Log Message:
  ---
  ASSERT traversing frames under 
WebExtensionContext::webNavigationTraverseFrameTreeForFrame.
https://webkit.org/b/268775
rdar://problem/122331877

Reviewed by Alex Christensen.

Add some more ASSERTs to try to catch where these bad frame identifiers are 
being introduced.

* Source/WebKit/Shared/API/APIFrameHandle.h:
* Source/WebKit/UIProcess/API/APIFrameInfo.cpp:
(API::FrameInfo::FrameInfo):
* Source/WebKit/UIProcess/API/APIFrameTreeNode.h:

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 8dabe5: Crash when closing page while extension is waiting...

2024-02-05 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8dabe5207fb4cd442388423dc0aa823e34b3a4a9
  
https://github.com/WebKit/WebKit/commit/8dabe5207fb4cd442388423dc0aa823e34b3a4a9
  Author: Timothy Hatcher 
  Date:   2024-02-05 (Mon, 05 Feb 2024)

  Changed paths:
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIActionCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIEventCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIMenusCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebNavigationCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebNavigationEventCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebRequestEventCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsEventCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIAction.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIEvent.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIMenus.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebNavigation.h
M 
Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebNavigationEvent.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebRequestEvent.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindows.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindowsEvent.h
M 
Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm
M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebNavigation.idl
M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebRequest.idl

  Log Message:
  ---
  Crash when closing page while extension is waiting on storage callback.
https://webkit.org/b/268767
rdar://problem/122328331

Reviewed by Brian Weinstein.

Teach the Web Extension code generator to pass references for the page and frame
to the implementation after null checking them. This avoids all the clients 
needing
to check, and makes the implementations safer. Log an error if they are null, 
and
return undefined to JavaScript. An exception would not be useful here, since the
page is being destroyed already.

Also use RefPtr for the impl, page, and frame pointers so the lifetime is 
guaranteed
for the current call duration.

Also stop setting ObjC types to nil by default, since the generated code is ARC.
Do similar for RefPtr types, since they also default to nullptr.

* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIActionCocoa.mm:
(WebKit::WebExtensionAPIAction::openPopup):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIEventCocoa.mm:
(WebKit::WebExtensionAPIEvent::addListener):
(WebKit::WebExtensionAPIEvent::removeListener):
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm:
(WebKit::WebExtensionAPIExtension::isInIncognitoContext):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIMenusCocoa.mm:
(WebKit::WebExtensionAPIMenus::createMenu):
(WebKit::WebExtensionAPIMenus::update):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm:
(WebKit::WebExtensionAPIPort::postMessage):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionAPIRuntime::getFrameId):
(WebKit::WebExtensionAPIRuntime::sendMessage):
(WebKit::WebExtensionAPIRuntime::connect):
(WebKit::WebExtensionAPIRuntime::sendNativeMessage):
(WebKit::WebExtensionAPIRuntime::connectNative):
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm:
(WebKit::WebExtensionAPIStorageArea::get):
(WebKit::WebExtensionAPIStorageArea::getBytesInUse):
(WebKit::WebExtensionAPIStorageArea::set):
(WebKit::WebExtensionAPIStorageArea::remove):
(WebKit::WebExtensionAPIStorageArea::clear):
(WebKit::WebExtensionAPIStorageArea::setAccessLevel):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm:
(WebKit::WebExtensionAPITabs::createTab):
(WebKit::WebExtensionAPITabs::query

[webkit-changes] [WebKit/WebKit] 1e7cb6: Don't fire window or tab events until the browser ...

2024-02-05 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1e7cb6de6869907b5b840532a65c37783bf9b41e
  
https://github.com/WebKit/WebKit/commit/1e7cb6de6869907b5b840532a65c37783bf9b41e
  Author: Timothy Hatcher 
  Date:   2024-02-05 (Mon, 05 Feb 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h
M Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  ---
  Don't fire window or tab events until the browser calls didOpenTab: and 
didOpenWindow:.
https://webkit.org/b/268671
rdar://122143707

Reviewed by Brian Weinstein.

Be more protective of when we fire window and tab events, so we never fire 
events
if the window or tab hasn't fired the onCreated event. Also add more smart 
pointer
use, assertions, and error logging to catch misuse.

While fixing this, I discovered the WKWebExtensionAPITabs.QueryWithPrivateAccess
test was not correct and was missing the tests for the incognito windows. Fixed
things up there, and added optional chaining to avoid exceptions when things are
incorrectly undefined / null.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(toAPI):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::postAsyncNotification):
(WebKit::WebExtensionContext::removeGrantedPermissionMatchPatterns):
(WebKit::WebExtensionContext::getOrCreateWindow const):
(WebKit::WebExtensionContext::getWindow const):
(WebKit::WebExtensionContext::forgetWindow const):
(WebKit::WebExtensionContext::getOrCreateTab const):
(WebKit::WebExtensionContext::getTab const):
(WebKit::WebExtensionContext::getCurrentTab const):
(WebKit::WebExtensionContext::forgetTab const):
(WebKit::WebExtensionContext::populateWindowsAndTabs):
(WebKit::WebExtensionContext::isValidWindow):
(WebKit::WebExtensionContext::isValidTab):
(WebKit::WebExtensionContext::openWindows const):
(WebKit::WebExtensionContext::openTabs const):
(WebKit::WebExtensionContext::frontmostWindow const):
(WebKit::WebExtensionContext::didOpenWindow):
(WebKit::WebExtensionContext::didCloseWindow):
(WebKit::WebExtensionContext::didFocusWindow):
(WebKit::WebExtensionContext::didOpenTab):
(WebKit::WebExtensionContext::didCloseTab):
(WebKit::WebExtensionContext::didActivateTab):
(WebKit::WebExtensionContext::didSelectOrDeselectTabs):
(WebKit::WebExtensionContext::didMoveTab):
(WebKit::WebExtensionContext::didReplaceTab):
(WebKit::WebExtensionContext::didChangeTabProperties):
(WebKit::WebExtensionContext::resourceLoadDidSendRequest):
(WebKit::WebExtensionContext::resourceLoadDidPerformHTTPRedirection):
(WebKit::WebExtensionContext::resourceLoadDidReceiveChallenge):
(WebKit::WebExtensionContext::resourceLoadDidReceiveResponse):
(WebKit::WebExtensionContext::resourceLoadDidCompleteWithError):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::parameters const):
(WebKit::WebExtensionTab::index const):
(WebKit::WebExtensionTab::parentTab const):
(WebKit::WebExtensionTab::mainWebView const):
(WebKit::WebExtensionTab::webViews const):
(WebKit::WebExtensionTab::isOpen const):
(WebKit::WebExtensionTab::isActive const):
(WebKit::WebExtensionTab::isPrivate const):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm:
(WebKit::WebExtensionWindow::activeTab const):
(WebKit::WebExtensionWindow::isOpen const):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::openTabs const): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
(WebKit::WebExtensionTab::didOpen):
(WebKit::WebExtensionTab::didClose):
* Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h:
(WebKit::WebExtensionWindow::didOpen):
(WebKit::WebExtensionWindow::didClose):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST):

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 856c43: Add a Web Extension test for activeTab and action ...

2024-02-02 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 856c436943899e53a2097d577ea4685d34a02818
  
https://github.com/WebKit/WebKit/commit/856c436943899e53a2097d577ea4685d34a02818
  Author: Timothy Hatcher 
  Date:   2024-02-02 (Fri, 02 Feb 2024)

  Changed paths:
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIMenus.mm

  Log Message:
  ---
  Add a Web Extension test for activeTab and action menus.
https://webkit.org/b/268639
rdar://problem/122194046

Reviewed by Brian Weinstein.

Add a new test that verifies that activeTab does grant visibility into the 
tab's URL and title
when invoking an action's menu item. We already had a test like this for 
context menu items.
This was mentioned in: https://github.com/mdn/browser-compat-data/issues/20592

* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIMenus.mm:
(TestWebKitAPI::TEST):

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 6dcf6d: Build fix for watchOS and tvOS.

2024-02-02 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6dcf6d1fe6e87803062a811cdff5961c2ee0e93c
  
https://github.com/WebKit/WebKit/commit/6dcf6d1fe6e87803062a811cdff5961c2ee0e93c
  Author: Timothy Hatcher 
  Date:   2024-02-02 (Fri, 02 Feb 2024)

  Changed paths:
M 
Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm
M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h

  Log Message:
  ---
  Build fix for watchOS and tvOS.

Unreviewed build fix.

* 
Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm:
* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h:
Move the non-extension code out from behind ENABLE(WK_WEB_EXTENSIONS).

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] d6da4e: Build fix for watchOS and tvOS.

2024-02-02 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d6da4ee644cba8a3899f47da4f0564707849e972
  
https://github.com/WebKit/WebKit/commit/d6da4ee644cba8a3899f47da4f0564707849e972
  Author: Timothy Hatcher 
  Date:   2024-02-02 (Fri, 02 Feb 2024)

  Changed paths:
M 
Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm
M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h

  Log Message:
  ---
  Build fix for watchOS and tvOS.

Unreviewed build fix.

* 
Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm:
Guard JSValue category by JSC_OBJC_API_ENABLED.
* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h:
Moved JSValue category outside ENABLE(WK_WEB_EXTENSIONS).

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 417a00: Build fix for watchOS and tvOS.

2024-02-02 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 417a000f33639885da95a1e16eb9d8f685629776
  
https://github.com/WebKit/WebKit/commit/417a000f33639885da95a1e16eb9d8f685629776
  Author: Timothy Hatcher 
  Date:   2024-02-02 (Fri, 02 Feb 2024)

  Changed paths:
M Source/WebKit/Platform/cocoa/CocoaHelpers.mm

  Log Message:
  ---
  Build fix for watchOS and tvOS.

Unreviewed build fix.

* Source/WebKit/Platform/cocoa/CocoaHelpers.mm:
Include all  for JSC_OBJC_API_ENABLED define.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] eed034: Build fix for watchOS and tvOS.

2024-02-01 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: eed034158e09adb984454607fd35aea713e71c55
  
https://github.com/WebKit/WebKit/commit/eed034158e09adb984454607fd35aea713e71c55
  Author: Timothy Hatcher 
  Date:   2024-02-01 (Thu, 01 Feb 2024)

  Changed paths:
M Source/WebKit/Platform/cocoa/CocoaHelpers.mm

  Log Message:
  ---
  Build fix for watchOS and tvOS.

Unreviewed build fix.

* Source/WebKit/Platform/cocoa/CocoaHelpers.mm:
(WebKit::encodeJSONString): Wrap JSValue use in JSC_OBJC_API_ENABLED.
(WebKit::encodeJSONData): Ditto.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 944eaf: Ghostery throws exception trying to use storageAre...

2024-02-01 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 944eaf18a9d63ee99bcbb6ad1fb93f8b3d210cae
  
https://github.com/WebKit/WebKit/commit/944eaf18a9d63ee99bcbb6ad1fb93f8b3d210cae
  Author: Timothy Hatcher 
  Date:   2024-02-01 (Thu, 01 Feb 2024)

  Changed paths:
M Source/WebKit/Platform/cocoa/CocoaHelpers.mm
M Source/WebKit/Shared/Extensions/WebExtensionUtilities.h
M Source/WebKit/Shared/Extensions/WebExtensionUtilities.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm
M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h
M 
Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm
M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIStorageArea.idl
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIStorage.mm

  Log Message:
  ---
  Ghostery throws exception trying to use storageArea.set().
https://webkit.org/b/268565
rdar://problem/122118152

Reviewed by Jeff Miller.

We need to use JavaScript's native JSON encoder for storage, since extensions 
like Ghostery
use toJSON() functions on custom objects to set data in storage.

Teach the code generator how to convert only the top-level keys of a dictionary 
while
having all the values be JSValue. This allows for the convenience of a 
dictionary for
the keys, and true values for conversion with JavaScript's JSON stringifier.

* Source/WebKit/Platform/cocoa/CocoaHelpers.mm:
(WebKit::encodeJSONString): Use JSValue's _toJSONString when it is a JSValue.
(WebKit::encodeJSONData): Ditto.
* Source/WebKit/Shared/Extensions/WebExtensionUtilities.h:
* Source/WebKit/Shared/Extensions/WebExtensionUtilities.mm:
(WebKit::anyItemsExceedQuota): Added keyWithError out param for better error 
logging.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm:
(WebKit::WebExtensionAPIStorageArea::set): Record JSON/quota errors per key for 
debugging ease.
* 
Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm:
(WebKit::toNSDictionary): Added ValuePolicy key to stop at top-level.
* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h:
* 
Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm:
(_platformTypeConstructor): Added support for NSDictionary=StopAtTopLevel 
attribute.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIStorageArea.idl:
(set): Use NSDictionary=StopAtTopLevel for items.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIStorage.mm:
(TestWebKitAPI::TEST): Added new test, and also test quota and null.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ead1bd: WebExtensionControllerProxy ASSERT in WebProcess w...

2024-01-31 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ead1bd233aac711efb8547ff8bcf6043cbf99af8
  
https://github.com/WebKit/WebKit/commit/ead1bd233aac711efb8547ff8bcf6043cbf99af8
  Author: Timothy Hatcher 
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
M Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp
M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
M Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.cpp

  Log Message:
  ---
  WebExtensionControllerProxy ASSERT in WebProcess when loading a page.
https://webkit.org/b/268511
rdar://problem/122051926

Reviewed by Jeff Miller.

The check for HashMap `contains()` ASSERTs return `true`, even though the 
WeakPtr is
null. Check if the pointer is null instead of just contained in the map.

Change the `WeakPtr` to be `WeakRef`, to better signal that the map should be
only non-null references. Also be explicit about the smart pointers.

* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::webExtensionContexts):
(WebKit::WebExtensionContext::get):
(WebKit::WebExtensionContext::WebExtensionContext):
* Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp:
(WebKit::webExtensionControllers):
(WebKit::WebExtensionController::get):
(WebKit::WebExtensionController::WebExtensionController):
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm:
(WebKit::webExtensionContextProxies):
(WebKit::WebExtensionContextProxy::get):
(WebKit::WebExtensionContextProxy::WebExtensionContextProxy):
(WebKit::WebExtensionContextProxy::~WebExtensionContextProxy):
(WebKit::WebExtensionContextProxy::getOrCreate):
* Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.cpp:
(WebKit::webExtensionControllerProxies):
(WebKit::WebExtensionControllerProxy::get):
(WebKit::WebExtensionControllerProxy::getOrCreate):
(WebKit::WebExtensionControllerProxy::WebExtensionControllerProxy):
(WebKit::WebExtensionControllerProxy::~WebExtensionControllerProxy):

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] f27c53: Clean up contentScriptWorld and userContentControl...

2024-01-31 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f27c5302e2aab73864ddcdfe3d0878ea8767aa06
  
https://github.com/WebKit/WebKit/commit/f27c5302e2aab73864ddcdfe3d0878ea8767aa06
  Author: Timothy Hatcher 
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h

  Log Message:
  ---
  Clean up contentScriptWorld and userContentControllers Web Extension code.
https://webkit.org/b/268484
rdar://problem/122029362

Reviewed by Brian Weinstein and Jeff Miller.

Add a helper for getting the current content controllers for a context, to avoid
the current hasAccessInPrivateBrowsing() check in multiple places.

Also add some ASSERTs to ensure contentScriptWorld() is only used when it is 
known.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::setHasAccessInPrivateBrowsing):
(WebKit::WebExtensionContext::addInjectedContent):
(WebKit::WebExtensionContext::removeInjectedContent):
(WebKit::WebExtensionContext::removeDeclarativeNetRequestRules):
(WebKit::WebExtensionContext::compileDeclarativeNetRequestRules):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::userContentControllers const): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContextProxy::dispatchRuntimeMessageEvent):
(WebKit::WebExtensionContextProxy::dispatchRuntimeConnectEvent):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 26040f: Remove contains check for tabs and windows.

2024-01-29 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 26040f2c9126e8b0e6591aa69177c58d2f8c8ed3
  
https://github.com/WebKit/WebKit/commit/26040f2c9126e8b0e6591aa69177c58d2f8c8ed3
  Author: Timothy Hatcher 
  Date:   2024-01-29 (Mon, 29 Jan 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h

  Log Message:
  ---
  Remove contains check for tabs and windows.
https://webkit.org/b/268342
rdar://problem/121887064

Reviewed by Brian Weinstein.

The "Window returned by windowForWebExtensionContext: does not contain the tab" 
exception is hard
to avoid when the tabs is being created, and not in a window yet. This 
exception is causing more
issues than is solves currently, so we should just remove it for now.

All existing code paths that use window() or index() properly check for nullptr 
or notFound.

Also adopt the fallbackAction() helper in a couple places I missed.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(WebKit::WebExtensionAction::hasUnreadBadgeText const): Use fallbackAction().
(WebKit::WebExtensionAction::setHasUnreadBadgeText): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::didCloseTab): Stop using SkipContainsCheck::Yes.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::window const): Removed SkipContainsCheck param.
(WebKit::WebExtensionTab::index const): Remove contains check.
(WebKit::WebExtensionTab::isPrivate const): Stop using SkipContainsCheck::Yes.
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 2f4ea4: Crash trying to load tabPageIdentifiers() and popu...

2024-01-25 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2f4ea4c094b72386cd25be293b6b6fa2c67064b1
  
https://github.com/WebKit/WebKit/commit/2f4ea4c094b72386cd25be293b6b6fa2c67064b1
  Author: Timothy Hatcher 
  Date:   2024-01-25 (Thu, 25 Jan 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/APIPageConfiguration.cpp
M Source/WebKit/UIProcess/API/APIPageConfiguration.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionURLSchemeHandlerCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionAction.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIExtension.mm

  Log Message:
  ---
  Crash trying to load tabPageIdentifiers() and popupPageIdentifiers().
https://webkit.org/b/268105
rdar://120867910

Reviewed by Brian Weinstein.

Clean up how we track extension tab and action pages, so we don't need to loop 
over openTabs(),
which is not safe to do while a WKWebView is being created.

Also clean up WKWebViewConfiguration, by not storing the WebExtensionController 
as
data members, when they are already stored on API::PageConfiguration. Also added
requiredWebExtensionBaseURL() to API::PageConfiguration.

Also made a few more tab and window getters on WebExtensionContext be const, to 
allow
use inside other const functions, like parameters().

* Source/WebKit/UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::requiredWebExtensionBaseURL const): Added.
(API::PageConfiguration::setRequiredWebExtensionBaseURL): Added.
(API::PageConfiguration::webExtensionController const): Made const.
(API::PageConfiguration::weakWebExtensionController const): Ditto.
* Source/WebKit/UIProcess/API/APIPageConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _requiredWebExtensionBaseURL]): Use 
APIPageConfiguration.
(-[WKWebViewConfiguration _setRequiredWebExtensionBaseURL:]): Ditto.
(-[WKWebViewConfiguration _strongWebExtensionController]): Ditto.
(-[WKWebViewConfiguration _webExtensionController]): Ditto.
(-[WKWebViewConfiguration _setWebExtensionController:]): Ditto.
(-[WKWebViewConfiguration _weakWebExtensionController]): Ditto.
(-[WKWebViewConfiguration _setWeakWebExtensionController:]): Ditto.
(-[WKWebViewConfiguration _setShouldRelaxThirdPartyCookieBlocking:]): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(WebKit::WebExtensionAction::fallbackAction const): Added helper.
(WebKit::WebExtensionAction::icon): Use fallbackAction().
(WebKit::WebExtensionAction::popupPath const): Ditto.
(WebKit::WebExtensionAction::popupWebView): Use new addPopupPage() method.
(WebKit::WebExtensionAction::label const): Use fallbackAction().
(WebKit::WebExtensionAction::badgeText const): Ditto.
(WebKit::WebExtensionAction::isEnabled const): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::isURLForThisExtension const): Added isValid() to 
bail earlier.
(WebKit::WebExtensionContext::getOrCreateWindow const): Made const.
(WebKit::WebExtensionContext::getWindow const): Ditto.
(WebKit::WebExtensionContext::getOrCreateTab const): Ditto.
(WebKit::WebExtensionContext::getTab const): Ditto.
(WebKit::WebExtensionContext::getCurrentTab const): Ditto.
(WebKit::WebExtensionContext::focusedWindow const): Ditto.
(WebKit::WebExtensionContext::frontmostWindow const): Ditto.
(WebKit::WebExtensionContext::popupPageIdentifiers const): Use the new map to 
build the Vector.
(WebKit::WebExtensionContext::tabPageIdentifiers const): Use the new map to 
build the Vector.
(WebKit::WebExtensionContext::addExtensionTabPage): Added.
(WebKit::WebExtensionContext::relatedWebView): Simplified by using 
requiredWebExtensionBaseURL().
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionURLSchemeHandlerCocoa.mm:
(WebKit::WebExtensionURLSchemeHandler::platformStartTask): Call 
addExtensionTabPage().
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp:
(WebKit::WebExtensionController::parameters const): Use WTF::map().
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIExtension.mm:
(TestWebKitAPI::TEST): Tweak test to conver another case. Correct test that was 
logging a JSON
error for object cycles.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] eaff76: Add a hasUnreadBadgeText property to _WKWebExtensi...

2024-01-24 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: eaff760b4a9ea37d5bbf33fd6d8f775b4c845135
  
https://github.com/WebKit/WebKit/commit/eaff760b4a9ea37d5bbf33fd6d8f775b4c845135
  Author: Timothy Hatcher 
  Date:   2024-01-24 (Wed, 24 Jan 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionAction.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm

  Log Message:
  ---
  Add a hasUnreadBadgeText property to _WKWebExtensionAction.
https://webkit.org/b/268014
rdar://problem/121536115

Reviewed by Brian Weinstein.

This property is automatically set to `YES` when `badgeText` changes and is not 
empty.
If `badgeText` becomes empty or the popup associated with the action is 
presented, this
property is automatically set to `NO`. Additionally, it should be set to `NO` 
by the app
when the badge has been presented to the user. This property is useful for 
higher-level
notification badges when extensions might be hidden behind an action sheet.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm:
(-[_WKWebExtensionAction hasUnreadBadgeText]): Added.
(-[_WKWebExtensionAction setHasUnreadBadgeText:]): Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm:
(WebKit::WebExtensionAction::readyToPresentPopup):
(WebKit::WebExtensionAction::setBadgeText):
(WebKit::WebExtensionAction::hasUnreadBadgeText const): Added.
(WebKit::WebExtensionAction::setHasUnreadBadgeText): Added.
(WebKit::WebExtensionAction::incrementBlockedResourceCount):
* Source/WebKit/UIProcess/Extensions/WebExtensionAction.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm:
(TestWebKitAPI::TEST): Added new tests.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] e819c4: All extensions are being granted the tabs permissi...

2024-01-24 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e819c4ec9e878eacac535573df5a24e18e821236
  
https://github.com/WebKit/WebKit/commit/e819c4ec9e878eacac535573df5a24e18e821236
  Author: Timothy Hatcher 
  Date:   2024-01-24 (Wed, 24 Jan 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  ---
  All extensions are being granted the tabs permission on user gesture.
https://webkit.org/b/267952
rdar://problem/121469546

Reviewed by Brian Weinstein.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::permissionState): Add missing activeTab 
permission check.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST): Added new test.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 69c8dc: WebKit Extensions URL schemes should be marked as ...

2024-01-19 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 69c8dc02b3d9d89e0453394df1e9ecd49400281a
  
https://github.com/WebKit/WebKit/commit/69c8dc02b3d9d89e0453394df1e9ecd49400281a
  Author: Timothy Hatcher 
  Date:   2024-01-19 (Fri, 19 Jan 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIExtension.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPILocalization.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm

  Log Message:
  ---
  WebKit Extensions URL schemes should be marked as secure, etc.
https://webkit.org/b/267740
rdar://problem/121222556

Reviewed by Brian Weinstein.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(-[_WKWebExtensionContext setBaseURL:]): Assert the URL scheme is registered.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::addProcessPool): Mark the extensionSchemes as 
secure,
bypassing CSP, and domain relaxation is forbidden.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm:
(WebKit::WebExtensionMatchPattern::extensionSchemes): Added.
(WebKit::WebExtensionMatchPattern::registerCustomURLScheme): Add to 
extensionSchemes.
* Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h:

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] f171b7: Attempt to fix tvOS build.

2024-01-18 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f171b7b70a5943f24e0db5e9dac2ab20510a39d0
  
https://github.com/WebKit/WebKit/commit/f171b7b70a5943f24e0db5e9dac2ab20510a39d0
  Author: Timothy Hatcher 
  Date:   2024-01-18 (Thu, 18 Jan 2024)

  Changed paths:
M 
Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.h
M 
Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.mm

  Log Message:
  ---
  Attempt to fix tvOS build.

Unreviewed build fix.

* Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.h:
* Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.mm:

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 2ffa7c: Add support for Web Extension cookies API.

2024-01-17 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2ffa7c91980ec5d1b448b38896c59dac4b77819c
  
https://github.com/WebKit/WebKit/commit/2ffa7c91980ec5d1b448b38896c59dac4b77819c
  Author: Timothy Hatcher 
  Date:   2024-01-17 (Wed, 17 Jan 2024)

  Changed paths:
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/Scripts/webkit/messages.py
A Source/WebKit/Shared/Extensions/WebExtensionCookieParameters.h
A 
Source/WebKit/Shared/Extensions/WebExtensionCookieParameters.serialization.in
M Source/WebKit/Shared/Extensions/WebExtensionUtilities.mm
M Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp
M Source/WebKit/UIProcess/API/APIHTTPCookieStore.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.h
M 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.mm
A 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerConfigurationCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
M Source/WebKit/UIProcess/Extensions/WebExtensionController.h
M Source/WebKit/UIProcess/Extensions/WebExtensionControllerConfiguration.cpp
M Source/WebKit/UIProcess/Extensions/WebExtensionControllerConfiguration.h
M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPICookiesCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPICookies.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPICookies.mm
M 
Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionControllerConfiguration.mm

  Log Message:
  ---
  Add support for Web Extension cookies API.
https://webkit.org/b/261771
rdar://problem/115743156

Reviewed by Brian Weinstein.

Finish up the support for cookies, which includes support for multiple cookies 
stores.

This required new _WKWebExtensionControllerConfiguration property to define 
what the
default WKWebsiteDataStore is, and the other stores are tracked by what tabs 
are open.

Added a bunch of new tests that cover all the cookies APIs.

* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/Scripts/webkit/messages.py:
(class_template_headers):
(headers_for_type):
* Source/WebKit/Shared/Extensions/WebExtensionCookieParameters.h: Added.
* 
Source/WebKit/Shared/Extensions/WebExtensionCookieParameters.serialization.in: 
Added.
* Source/WebKit/Shared/Extensions/WebExtensionUtilities.mm:
(WebKit::validateSingleObject):
(WebKit::validateDictionary):
* Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:
(API::HTTPCookieStore::cookies):
* Source/WebKit/UIProcess/API/APIHTTPCookieStore.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.mm:
(-[_WKWebExtensionControllerConfiguration encodeWithCoder:]):
(-[_WKWebExtensionControllerConfiguration initWithCoder:]):
(-[_WKWebExtensionControllerConfiguration defaultWebsiteDataStore]):
(-[_WKWebExtensionControllerConfiguration setDefaultWebsiteDataStore:]):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm:
 Added.
(WebKit::domainsMatch):
(WebKit::toURL):
(WebKit::WebExtensionContext::fetchCookies):
(WebKit::WebExtensionContext::cookiesGet):
(WebKit::WebExtensionContext::cookiesGetAll):
(WebKit::WebExtensionContext::cookiesSet):
(WebKit::WebExtensionContext::cookiesRemove):
(WebKit::WebExtensionContext::cookiesGetAllCookieStores):
(WebKit::WebExtensionContext::fireCookiesChangedEventIfNeeded):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::websiteDataStore const):
(WebKit::WebExtensionContext::cookiesDidChange):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::addPage):
(WebKit::WebExtensionController::removePage):
(WebKit::WebExtensionController::websiteDataStore const):
(WebKit::WebExtensionController::addWebsiteDataStore):
(WebKit::WebExtensionController::removeWebsiteDataStore):
(WebKit::WebExtensionController::cookiesDidChange):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerConfigurationCocoa.mm:
(WebKit::WebExtensionControllerConfiguration::copy const):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions

[webkit-changes] [WebKit/WebKit] 5327fc: Add some tests for tabs.onUpdated event with priva...

2024-01-17 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5327fc4dd8852577ac7baf1e134b25e94a180347
  
https://github.com/WebKit/WebKit/commit/5327fc4dd8852577ac7baf1e134b25e94a180347
  Author: Timothy Hatcher 
  Date:   2024-01-17 (Wed, 17 Jan 2024)

  Changed paths:
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  ---
  Add some tests for tabs.onUpdated event with private tabs.
https://webkit.org/b/267506
rdar://problem/120961040

Reviewed by Brian Weinstein.

Add tests to verify that tabs.onUpdated does not fire for tabs that extensions
does not have access to see.

* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST):

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 814028: Crash returning non-string results in scripting.ex...

2024-01-10 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 814028b389f8a6d2150fb632bda456dc6552f51f
  
https://github.com/WebKit/WebKit/commit/814028b389f8a6d2150fb632bda456dc6552f51f
  Author: Timothy Hatcher 
  Date:   2024-01-10 (Wed, 10 Jan 2024)

  Changed paths:
M 
Source/WebKit/Shared/Extensions/WebExtensionDynamicScripts.serialization.in
M 
Source/WebKit/Shared/Extensions/WebExtensionScriptInjectionResultParameters.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIScriptingCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  ---
  Crash returning non-string results in scripting.executeScript and 
tabs.executeScript.
https://webkit.org/b/267376
rdar://119334188

Reviewed by Brian Weinstein.

Treat the result of scripting.executeScript and tabs.executeScript as a 
JSON-serializable
value and encode and parse it as needed. Added new tests that confirms this 
works.

* Source/WebKit/Shared/Extensions/WebExtensionDynamicScripts.serialization.in:
* Source/WebKit/Shared/Extensions/WebExtensionScriptInjectionResultParameters.h:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm:
(WebKit::WebExtensionDynamicScripts::toInjectionResultParameters):
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIScriptingCocoa.mm:
(WebKit::toWebAPI):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST):

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] fff2fd: browser.commands missing when action command has n...

2024-01-03 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fff2fd0be2e4544d9141f1f6ea058c932e49c823
  
https://github.com/WebKit/WebKit/commit/fff2fd0be2e4544d9141f1f6ea058c932e49c823
  Author: Timothy Hatcher 
  Date:   2024-01-03 (Wed, 03 Jan 2024)

  Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPICommands.mm

  Log Message:
  ---
  browser.commands missing when action command has no description (breaks 
1Password)
https://webkit.org/b/267058
rdar://120391725

Reviewed by Brian Weinstein.

The description is optional for action commands in the manifest. We currently 
log an error
and return no commands, so the commands API is omitted. This change makes the 
action commands
fallback to the action label if the description key is missing. An error is 
still logged
for standard commands that are missing a description.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::populateCommandsIfNeeded): Adjusted logic to only 
require description for
standard commands and not action commands.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPICommands.mm:
(TestWebKitAPI::TEST): Adjusted current test manifest and GetAll test to check 
fallback.

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 52b154: TestWebKitAPI.WKWebExtensionAPITabs.ActiveTab is f...

2023-12-18 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 52b154a911f1b2450d8d73569b70599a6b6e9974
  
https://github.com/WebKit/WebKit/commit/52b154a911f1b2450d8d73569b70599a6b6e9974
  Author: Timothy Hatcher 
  Date:   2023-12-18 (Mon, 18 Dec 2023)

  Changed paths:
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  TestWebKitAPI.WKWebExtensionAPITabs.ActiveTab is flaky.
https://webkit.org/b/266594
rdar://119346255

Reviewed by Brian Weinstein.

The URL does not change for tabs during the provisional load, and saying it was 
changing
was causing the onChanged event to fire too soon for this test to be accurate.

Also tweak how we check for properties in the changeInfo object to be 
consistent.

* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionTab webView:didStartProvisionalNavigation:]):
(-[TestWebExtensionTab 
webView:didReceiveServerRedirectForProvisionalNavigation:]):
(-[TestWebExtensionTab webView:didFailNavigation:withError:]):

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] dcd6c4: WKWebExtensionAPITabs.RemovedEvent is flaky (somet...

2023-12-18 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: dcd6c460a0327bcd8a2efef461ba9280bb7a7090
  
https://github.com/WebKit/WebKit/commit/dcd6c460a0327bcd8a2efef461ba9280bb7a7090
  Author: Timothy Hatcher 
  Date:   2023-12-18 (Mon, 18 Dec 2023)

  Changed paths:
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  ---
  WKWebExtensionAPITabs.RemovedEvent is flaky (sometimes wrong tab ID).
https://webkit.org/b/261848
rdar://problem/115809590

Unreviewed test gardening.

Enable the WKWebExtensionAPITabs.RemovedEvent test, since it no longer fails
after hundreds of iterations.

* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST):

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] fdd1ff: REGRESSION (271259@main?): [ iOS Sonoma Debug arm6...

2023-12-18 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fdd1ff775c0c2b996e545ddf82b564f31c575227
  
https://github.com/WebKit/WebKit/commit/fdd1ff775c0c2b996e545ddf82b564f31c575227
  Author: Timothy Hatcher 
  Date:   2023-12-18 (Mon, 18 Dec 2023)

  Changed paths:
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  ---
  REGRESSION (271259@main?): [ iOS Sonoma Debug arm64 ] 
TestWebKitAPI.WKWebExtensionAPITabs.SendMessageWithPromiseReply timeout
https://webkit.org/b/266518
rdar://problem/119740501

Reviewed by Brian Weinstein.

Adopt EagerCallbackAggregator for the reply handler. This was added on the 
UIProcess side
for the message sending in 271636@main. It can also be used here, with the help 
of an ObjC
wrapper object that can keep the aggregator in scope for the required blocks.

We can't use BlockPtr for these since the JSValue ObjC translation requires 
blocks to have
a signature to translate them into JavaScript functions, which is only for 
compiled blocks.
Without this, the aggregator falls out of scope and is released.

Added additional tests to make sure async replies work in addition to sync 
replies. Also
adopted optional chaining for some tests since an exception is thrown when 
response is null.

* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(-[_WKReplyCallbackAggregator initWithAggregator:]): Added.
(-[_WKReplyCallbackAggregator aggregator]): Added.
(WebKit::WebExtensionContextProxy::internalDispatchRuntimeMessageEvent):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST):

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 6dd1c2: Add interface and parsing support Web Extensions c...

2023-12-15 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6dd1c2e5a21a6cbbdd49e34dd3cc60d174078270
  
https://github.com/WebKit/WebKit/commit/6dd1c2e5a21a6cbbdd49e34dd3cc60d174078270
  Author: Timothy Hatcher 
  Date:   2023-12-15 (Fri, 15 Dec 2023)

  Changed paths:
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
A 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPICookiesCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm
A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPICookies.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h
A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPICookies.idl
M 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl
M Tools/TestWebKitAPI/SourcesCocoa.txt
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
A Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPICookies.mm

  Log Message:
  ---
  Add interface and parsing support Web Extensions cookies API.
https://webkit.org/b/261771
rdar://problem/115743156

Reviewed by Brian Weinstein.

* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPICookiesCocoa.mm: 
Added.
(WebKit::WebExtensionAPICookies::get):
(WebKit::WebExtensionAPICookies::getAll):
(WebKit::WebExtensionAPICookies::set):
(WebKit::WebExtensionAPICookies::remove):
(WebKit::WebExtensionAPICookies::getAllCookieStores):
(WebKit::WebExtensionAPICookies::onChanged):
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:
(WebKit::WebExtensionAPINamespace::cookies):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPICookies.h: Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h:
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPICookies.idl: 
Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl:
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPICookies.mm: Added.
(TestWebKitAPI::TEST):

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


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


  1   2   3   4   5   6   7   8   9   10   >