[webkit-changes] [WebKit/WebKit] fcb885: Add back _WKWebExtensionTab and _WKWebExtensionWin...

2024-08-06 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fcb885e233b317ee3798039824853b8952fb98fa
  
https://github.com/WebKit/WebKit/commit/fcb885e233b317ee3798039824853b8952fb98fa
  Author: Timothy Hatcher 
  Date:   2024-08-06 (Tue, 06 Aug 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindow.h

  Log Message:
  ---
  Add back _WKWebExtensionTab and _WKWebExtensionWindow.
https://webkit.org/b/277701
rdar://problem/133314006

Reviewed by Brian Weinstein.

Add back _WKWebExtensionTab and _WKWebExtensionWindow and inherit from
the unprefixed protoocl to keep iOS and visionOS Safari happy. Add them on
a staging object to expose the protocol symbols in the WebKit binary.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindow.h:

Canonical link: https://commits.webkit.org/281904@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] 1f1720: REGRESSION (281723@main):[ iOS ]: 22 API test are ...

2024-08-03 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1f1720a65d5655edf8cc18ff247acd9ceee0363c
  
https://github.com/WebKit/WebKit/commit/1f1720a65d5655edf8cc18ff247acd9ceee0363c
  Author: Timothy Hatcher 
  Date:   2024-08-03 (Sat, 03 Aug 2024)

  Changed paths:
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h
A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMatchPattern.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptions.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindowCreationOptions.h
M Source/WebKit/WebKit.xcodeproj/project.pbxproj

  Log Message:
  ---
  REGRESSION (281723@main):[ iOS ]: 22 API test are constantly crashing.
https://webkit.org/b/277563
rdar://problem/133081797

Reviewed by Wenson Hsieh.

Define the old Web Extension API symbols to maintain bincompat with older OS 
builds.

* Source/WebKit/SourcesCocoa.txt: Added _WKWebExtension.mm.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h: Added @interface.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm: Added.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h: Added @interface.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.h: Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h: Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h: Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.h: Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMatchPattern.h: Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.h: Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptions.h: Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindowCreationOptions.h: 
Ditto.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj: Added _WKWebExtension.mm.

Canonical link: https://commits.webkit.org/281809@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] 0c1617: Raindrop extension doesn't seem to be able to auth...

2024-08-01 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0c16173ab63bb0b215559223635988bfa5be7c6d
  
https://github.com/WebKit/WebKit/commit/0c16173ab63bb0b215559223635988bfa5be7c6d
  Author: Timothy Hatcher 
  Date:   2024-08-01 (Thu, 01 Aug 2024)

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

  Log Message:
  ---
  Raindrop extension doesn't seem to be able to authenticate.
https://webkit.org/b/277519
rdar://132912898

Reviewed by Jeff Miller and Brian Weinstein.

The CORS disabling patterns for the extension was not including optional host 
permissions due to
a copy-and-paste error (`allRequestedMatchPatterns()` vs 
`optionalPermissionMatchPatterns()`.)
Also corrected FIXME bug info to be more accurate.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::corsDisablingPatterns): Use 
optionalPermissionMatchPatterns().
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIPermissions.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIPermissions, CORS)): Added.

Canonical link: https://commits.webkit.org/281739@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] 2bc7fc: Unprefix the Web Extensions API.

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

  Changed paths:
M Source/WebKit/Modules/OSX_Private.modulemap
M Source/WebKit/Modules/iOS_Private.modulemap
M Source/WebKit/Shared/API/Cocoa/WebKit.h
M Source/WebKit/Shared/Cocoa/APIObject.mm
M Source/WebKit/Shared/Extensions/_WKWebExtensionLocalization.mm
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtension.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtension.mm
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionAction.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionAction.mm
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionActionInternal.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionActionPrivate.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionCommand.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionCommand.mm
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionCommandInternal.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionCommandPrivate.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContext.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContext.mm
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContextInternal.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContextPrivate.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionController.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionController.mm
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerConfiguration.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerConfiguration.mm
A 
Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerConfigurationInternal.h
A 
Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerConfigurationPrivate.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerDelegate.h
A 
Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerDelegatePrivate.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerInternal.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerPrivate.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionDataRecord.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionDataRecord.mm
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionDataRecordInternal.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionDataRecordPrivate.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionDataType.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionDataType.mm
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionDataTypeInternal.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionInternal.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMatchPattern.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMatchPattern.mm
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMatchPatternInternal.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMatchPatternPrivate.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMessagePort.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMessagePort.mm
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMessagePortInternal.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMessagePortPrivate.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionPermission.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionPermission.mm
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionPermissionPrivate.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionPrivate.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionTab.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionTabCreationOptions.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionTabCreationOptions.mm
A 
Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionTabCreationOptionsInternal.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionWindow.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionWindowCreationOptions.h
A Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionWindowCreationOptions.mm
A 
Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionWindowCreationOptionsInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h
R Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h
R Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm
R Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionActionInternal.h
R Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionActionPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.h
R Source/WebKit

[webkit-changes] [WebKit/WebKit] 45e07b: Additional Web Extensions API changes based on fee...

2024-07-30 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 45e07b5428077bf94cff5940445ca7254e16268e
  
https://github.com/WebKit/WebKit/commit/45e07b5428077bf94cff5940445ca7254e16268e
  Author: Timothy Hatcher 
  Date:   2024-07-30 (Tue, 30 Jul 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindow.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.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/WebExtensionContextAPIWebNavigationCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPICookies.mm
M 
Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDeclarativeNetRequest.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIExtension.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIMenus.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIStorage.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWebNavigation.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWebRequest.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWindows.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  Additional Web Extensions API changes based on feedback.
https://webkit.org/b/277374
rdar://problem/132843735

Reviewed by Brian Weinstein.

Renamed the protocol method on `_WKWebExtensionTab` from 
`mainWebViewForWebExtensionContext:`
to just `webViewForWebExtensionContext:` since 
`webViewsForWebExtensionContext:` was removed.
Renamed all uses of `mainWebView` in extensions code to match.

Added `NS_SWIFT_NAME` to `_WKWebExtensionTabChangedProperties`, 
`_WKWebExtensionWindowType`,
and `_WKWebExtensionWindowState`.

Finally, use `WK_NULLABLE_RESULT` for `_WKWebExtension` async convenience 
methods for better
importation to Swift.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindow.h:
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm:
(WebKit::WebExtensionContext::cookiesGetAllCookieStores):
* 
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::tabsExecuteScript):
(WebKit::WebExtensionContext::tabsInsertCSS):
(WebKit::WebExtensionContext::tabsRemoveCSS):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWebNavigationCocoa.mm:
(WebKit::WebExtensionContext::webNavigationGetFrame):
(WebKit::WebExtensionContext::webNavigationGetAllFrames):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::getCurrentTab const):
(WebKit::WebExtensionContext::reportWebViewConfigurationErrorIfNeeded const):
(WebKit::WebExtensionContext::openInspectors const):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::WebExtensionTab):
(WebKit::WebExtensionTab::webView const):
(WebKit::WebExtensionTab::title const):
(WebKit::WebExtensionTab::size const):
(WebKit::WebExtensionTab::zoomFactor const):
(WebKit::WebExtensionTab::setZoomFactor):
(WebKit::WebExtensionTab::url const):
(WebKit::WebExtensionTab::isLoadingComplete const):
(WebKit::WebExtensionTab::captureVisibleWebpage):
(WebKit::WebExtensionTab::loadURL):
(WebKit::WebExtensionTab::reload):
(WebKit::WebExtensionTab::goBack):
(WebKit::WebExtensionTab::goForward):
(WebKit::WebExtensionTab::processes const):
(WebKit::WebExtensionTab::mainWebView const): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIAction

[webkit-changes] [WebKit/WebKit] 9619df: REGRESSION (280925@main): [ macOS iOS ] TestWebKit...

2024-07-30 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 9619df3a01b1727e59bf4a819aa93271c7b2732d
  
https://github.com/WebKit/WebKit/commit/9619df3a01b1727e59bf4a819aa93271c7b2732d
  Author: Timothy Hatcher 
  Date:   2024-07-30 (Tue, 30 Jul 2024)

  Changed paths:
M Source/WTF/wtf/WeakObjCPtr.h

  Log Message:
  ---
  REGRESSION (280925@main): [ macOS iOS ] 
TestWebKitAPI.WebKit2_WeakObjCPtr.LogicalNegation is a constant failure.
https://webkit.org/b/277285
rdar://problem/132755490

Reviewed by Brian Weinstein.

Revert the WeakObjCPtr changes of 280925@main. The autorelease pool was 
retaining the object past the
scope of the WeakObjCPtr in the LogicalNegation test, keeping it non-nil longer 
than expected.

* Source/WTF/wtf/WeakObjCPtr.h:
(WTF::WeakObjCPtr::operator! const): Switch back to get().
(WTF::WeakObjCPtr::operator bool const): Ditto.

Canonical link: https://commits.webkit.org/281582@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] c8ea30: Update _WKWebExtensionTabCreationOptions and _WKWe...

2024-07-26 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c8ea30e4b6ff204b8a058973840720d567406c73
  
https://github.com/WebKit/WebKit/commit/c8ea30e4b6ff204b8a058973840720d567406c73
  Author: Timothy Hatcher 
  Date:   2024-07-26 (Fri, 26 Jul 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptions.h
M 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptionsInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindowCreationOptions.h
M 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindowCreationOptionsInternal.h
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/WebExtensionTabCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWindows.mm
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  Update _WKWebExtensionTabCreationOptions and 
_WKWebExtensionWindowCreationOptions.
https://webkit.org/b/277091
rdar://problem/132511753

Reviewed by Brian Weinstein.

Drop the "waffle" word prefixes from the properties on 
`_WKWebExtensionTabCreationOptions` and
`_WKWebExtensionWindowCreationOptions`, since the class clearly communicates 
these are options.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptions.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptionsInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindowCreationOptions.h:
* 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindowCreationOptionsInternal.h:
* 
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/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::duplicate):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIAction, NavigationOpensInNewTab)):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, Create)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, CreateWithSpecifiedOptions)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, CreateWithRelativeURL)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, Duplicate)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, DuplicateWithOptions)):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWindows.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIWindows, Create)):
(TestWebKitAPI::TEST(WKWebExtensionAPIWindows, CreateWithRelativeURL)):
(TestWebKitAPI::TEST(WKWebExtensionAPIWindows, CreateWithRelativeURLs)):
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionManager initForExtension:extensionControllerConfiguration:]):
(-[TestWebExtensionWindow openNewTabAtIndex:]):

Canonical link: https://commits.webkit.org/281405@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] 442841: Update Web Extension tabs API based on feedback.

2024-07-25 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 442841bf92b4e7def4d5edbf6006afe26c5dd9ff
  
https://github.com/WebKit/WebKit/commit/442841bf92b4e7def4d5edbf6006afe26c5dd9ff
  Author: Timothy Hatcher 
  Date:   2024-07-25 (Thu, 25 Jul 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindow.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.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
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  Update Web Extension tabs API based on feedback.
https://webkit.org/b/277019
rdar://problem/132419218

Reviewed by Brian Weinstein.

Revise several `_WKWebExtensionTab` protocol methods to have a single setter 
instead of two.
This simplifies the client’s code and reduces the likelihood of forgetting to 
implement both
true and false states for features like pin, mute, reader mode, and select.

To ensure future-proofing, I changed the `captureVisibleWebpage` method to 
`takeSnapshot` and
pass along the `WKSnapshotConfiguration`. This allows Web Extensions to have 
different options
in the future without requiring additional changes.

Additionally, I reduced the reload methods to one with a parameter for 
fromOrigin, and I
removed the “detect” keyword from `detectWebpageLocale`.

Finally, `_WKWebExtensionTabChangedPropertiesAll` has been removed since it is 
not future proof
and dangerous if more properties are added later.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(toImpl):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindow.h:
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsReload):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::WebExtensionTab):
(WebKit::WebExtensionTab::parameters const):
(WebKit::WebExtensionTab::changedParameters const):
(WebKit::WebExtensionTab::title const):
(WebKit::WebExtensionTab::setPinned):
(WebKit::WebExtensionTab::setReaderModeShowing):
(WebKit::WebExtensionTab::isReaderModeShowing const):
(WebKit::WebExtensionTab::setMuted):
(WebKit::WebExtensionTab::detectWebpageLocale):
(WebKit::WebExtensionTab::captureVisibleWebpage):
(WebKit::WebExtensionTab::reload):
(WebKit::WebExtensionTab::setSelected):
(WebKit::WebExtensionTab::pin): Deleted.
(WebKit::WebExtensionTab::unpin): Deleted.
(WebKit::WebExtensionTab::toggleReaderMode): Deleted.
(WebKit::WebExtensionTab::isShowingReaderMode const): Deleted.
(WebKit::WebExtensionTab::mute): Deleted.
(WebKit::WebExtensionTab::unmute): Deleted.
(WebKit::WebExtensionTab::reloadFromOrigin): Deleted.
(WebKit::WebExtensionTab::select): Deleted.
(WebKit::WebExtensionTab::deselect): Deleted.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm:
(WebKit::WebExtensionWindow::WebExtensionWindow):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
(WebKit::WebExtensionTab::pin):
(WebKit::WebExtensionTab::unpin):
(WebKit::WebExtensionTab::toggleReaderMode):
(WebKit::WebExtensionTab::mute):
(WebKit::WebExtensionTab::unmute):
(WebKit::WebExtensionTab::select):
(WebKit::WebExtensionTab::deselect):
* Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, ToggleReaderMode)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, DetectLanguage)):
(TestWebKitAPI::TEST(WKWebExtensionAPITabs, Reload)):
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h:
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionTab isReaderModeShowingForWebExtensionContext:]):
(-[TestWebExtensionTab 
setReaderModeShowing:forWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab webpageLocaleForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab 
reloadForWebExtensionContext:fromOrigin:completionHandler:]):
(-[TestWebExtensionTab setPinned:forWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab setMuted:forWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab setSelected:forWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab isShowingReaderModeForWebExtensionContext

[webkit-changes] [WebKit/WebKit] 12ddf2: Update WebKit Extensions API.

2024-07-22 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 12ddf2937b32ccfcab7b9515f7e5e6a3c602fe03
  
https://github.com/WebKit/WebKit/commit/12ddf2937b32ccfcab7b9515f7e5e6a3c602fe03
  Author: Timothy Hatcher 
  Date:   2024-07-22 (Mon, 22 Jul 2024)

  Changed paths:
M Source/WebKit/Shared/API/Cocoa/WKFoundation.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContextPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.h
M 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfigurationPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h
M 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegatePrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataType.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMatchPattern.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermission.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermissionPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptions.h
M 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptionsInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindow.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindowCreationOptions.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionContext.mm

  Log Message:
  ---
  Update WebKit Extensions API.
https://webkit.org/b/276822
rdar://problem/132098855

Reviewed by Brian Weinstein.

Reset the OS availability for all symbols, adopt modern 
NS_HEADER_AUDIT_BEGIN/END
macros, and mark all classes/protocols with NS_SWIFT_UI_ACTOR.

Renamed `discoverabilityTitle` to `title` in `_WKWebExtensionCommand`.

Removed `HAVE_UPDATED_WEB_EXTENSION_*` defines that were temporary.

* Source/WebKit/Shared/API/Cocoa/WKFoundation.h: Added WK_HEADER_AUDIT_BEGIN/END
for compatibility with older SDKs.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.mm:
(-[_WKWebExtensionCommand description]): Use title.
(-[_WKWebExtensionCommand title]): Renamed from discoverabilityTitle.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContextPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.h:
* 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfigurationPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegatePrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataType.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMatchPattern.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermission.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermissionPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptions.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptionsInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindow.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindowCreationOptions.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionContext.mm:
(TestWebKitAPI::TEST(WKWebExtensionContext, CommandsParsing)):

Canonical link: https://commits.webkit.org/281204@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] 514431: Update WebKit Extensions API.

2024-07-22 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 514431ad30b6766b5d70d3883992703fbb4a4a0d
  
https://github.com/WebKit/WebKit/commit/514431ad30b6766b5d70d3883992703fbb4a4a0d
  Author: Timothy Hatcher 
  Date:   2024-07-22 (Mon, 22 Jul 2024)

  Changed paths:
M Source/WebKit/Shared/API/Cocoa/WKFoundation.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContextPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.h
M 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfigurationPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h
M 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegatePrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataType.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMatchPattern.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermission.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermissionPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptions.h
M 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptionsInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindow.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindowCreationOptions.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionContext.mm

  Log Message:
  ---
  Update WebKit Extensions API.
https://webkit.org/b/276822
rdar://problem/132098855

Reviewed by Brian Weinstein.

Reset the OS availability for all symbols, adopt modern 
NS_HEADER_AUDIT_BEGIN/END
macros, and mark all classes/protocols with NS_SWIFT_UI_ACTOR.

Renamed `discoverabilityTitle` to `title` in `_WKWebExtensionCommand`.

Removed `HAVE_UPDATED_WEB_EXTENSION_*` defines that were temporary.

* Source/WebKit/Shared/API/Cocoa/WKFoundation.h: Added WK_HEADER_AUDIT_BEGIN/END
for compatibility with older SDKs.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionCommand.mm:
(-[_WKWebExtensionCommand description]): Use title.
(-[_WKWebExtensionCommand title]): Renamed from discoverabilityTitle.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContextPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.h:
* 
Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfigurationPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegatePrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataType.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMatchPattern.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermission.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermissionPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptions.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTabCreationOptionsInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindow.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionWindowCreationOptions.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionContext.mm:
(TestWebKitAPI::TEST(WKWebExtensionContext, CommandsParsing)):

Canonical link: https://commits.webkit.org/281197@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] 10f170: Manifest v2 web_accessible_resources are not working.

2024-07-19 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 10f17092d03f8a428e17db665bada7c87010ee2d
  
https://github.com/WebKit/WebKit/commit/10f17092d03f8a428e17db665bada7c87010ee2d
  Author: Timothy Hatcher 
  Date:   2024-07-19 (Fri, 19 Jul 2024)

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

  Log Message:
  ---
  Manifest v2 web_accessible_resources are not working.
https://webkit.org/b/276835
rdar://131750151

Reviewed by Brian Weinstein.

Manifest v2 web accessible resources don’t restrict the page URLs they can load 
from. Therefore,
any page should be able to load them. However, the previous code was using a 
`*://*/*` pattern,
which was too restrictive to allow URLs like `about:srcdoc`. Even the 
`` pattern was
too restrictive, as it only allowed supported schemes.

To fix this, allow an empty match patterns set to allow any URL. This is only 
supported on
Manifest v2, as an empty patterns array is an error in Manifest v3.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::isWebAccessibleResource): Default to allowed if the 
patterns are empty.
(WebKit::WebExtension::populateWebAccessibleResourcesIfNeeded): Use an empty 
patterns set.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm:
(TestWebKitAPI::TEST(WKWebExtensionController, WebAccessibleResourcesV2)): 
Added.

Canonical link: https://commits.webkit.org/281157@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] 8c332e: Add indexInWindowForWebExtensionContext: to _WKWeb...

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

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  Add indexInWindowForWebExtensionContext: to _WKWebExtensionTab.
https://webkit.org/b/276793
rdar://problem/132029062

Reviewed by Brady Eidson.

Getting the tabs and converting them all to `WebExtensionTab` can be expensive
when the user has hundreds of tabs open in a window. Often the browser can 
quickly
answer what the index in the window is more efficiently. This adds a new 
optional
protocol method to `_WKWebExtensionTab` for getting the index in the window. If 
it
is not implement, fallback to asking the window for all tabs and finding the 
index
from that tabs Vector like before.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::WebExtensionTab): Cache responds to selector for new 
method.
(WebKit::WebExtensionTab::index const): Use new index method, fallback to tabs.
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionTab indexInWindowForWebExtensionContext:]): Added.

Canonical link: https://commits.webkit.org/281115@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] d7c940: MobileSafari hangs for 2.6 to 5.2 seconds in WebKi...

2024-07-12 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d7c940fc0a09e4cfbc249ad1c62e2d7e2da1430a
  
https://github.com/WebKit/WebKit/commit/d7c940fc0a09e4cfbc249ad1c62e2d7e2da1430a
  Author: Timothy Hatcher 
  Date:   2024-07-12 (Fri, 12 Jul 2024)

  Changed paths:
M Source/WTF/wtf/Assertions.h
M Source/WTF/wtf/WeakObjCPtr.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.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/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionAction.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h

  Log Message:
  ---
  MobileSafari hangs for 2.6 to 5.2 seconds in 
WebKit::WebExtensionWindow::tabs(WebKit::WebExtensionWindow::SkipValidation) 
const.
https://webkit.org/b/276552
rdar://131567261

Reviewed by Brian Weinstein.

Reduced amount of time spent in web extension classes by removing all internal 
`conformsToProtocol:`
checks. This saves 31.78% of time spent. We still do protocol checks at the API 
entry points. All the
methods in these protocols are optional, and we have `respondsToSelector:` 
checks that are cached.

Removed expensive checks in release builds for the web view configuration of 
tabs every time we get
a `WebExtensionTab`. This saves 23.69% of time spent. This method is still 
helpful and used in debug
builds for catching misconfiguration issues.

Stopped making a throw-away `RetainPtr` when checking a `WeakObjCPtr` as a 
`bool`. This saves 6.7% of
time spent. We can use `getAutoreleased()` instead when converting the raw 
pointer value to `bool`.
This was happening in all the `WebExtensionWindow` and `WebExtensionTab` 
methods that do `isValid()`
checks at the beginning of the method.

Adopted `UNLIKELY()` in uncommon code branches, logging macros, and assertions 
to help the compiler
optimize these paths better in release builds.

In total, this change removes 62.18% of time spent and should be at least 2.64x 
faster.

* Source/WTF/wtf/Assertions.h: Use UNLIKELY() in more cases.
* Source/WTF/wtf/WeakObjCPtr.h:
(WTF::WeakObjCPtr::operator! const): Use getAutoreleased() to avoid making a 
throw-away RetainPtr.
(WTF::WeakObjCPtr::operator bool const): Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(toImpl): Drive-by to simplify loop type that will be renamed soon.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIRuntimeCocoa.mm:
(WebKit::WebExtensionContext::runtimeOpenOptionsPage): Removed 
conformsToProtocol: check.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsCreate): Removed conformsToProtocol: check.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWindowsCocoa.mm:
(WebKit::WebExtensionContext::windowsCreate): Removed conformsToProtocol: check.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::getWindow const): Adopt UNLIKELY() and remove 
conformsToProtocol:.
(WebKit::WebExtensionContext::getTab const): Ditto.
(WebKit::WebExtensionContext::getCurrentTab const): Ditto.
(WebKit::WebExtensionContext::populateWindowsAndTabs): Ditto.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::WebExtensionTab): Removed conformsToProtocol: check.
(WebKit::WebExtensionTab::window const): Ditto.
(WebKit::WebExtensionTab::parentTab const): Ditto.
(WebKit::WebExtensionTab::mainWebView const): Reduce property access with 
variables.
(WebKit::WebExtensionTab::duplicate): Removed conformsToProtocol: check.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm:
(WebKit::WebExtensionWindow::WebExtensionWindow): Removed conformsToProtocol: 
check.
(WebKit::WebExtensionWindow::tabs const): Ditto.
(WebKit::WebExtensionWindow::activeTab const): Ditto.
* Source/WebKit/UIProcess/Extensions/WebExtensionAction.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::reportWebViewConfigurationErrorIfNeeded const): 
Made a no-op in release
builds since it has a performance impact with little benefit to release builds.

Canonical link: https://commits.webkit.org/280925@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] 0f7c9d: Crash under WebExtensionContextProxy::enumerateFra...

2024-07-08 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0f7c9d38a4fefa0cd1fae7f59bc4103c10274ace
  
https://github.com/WebKit/WebKit/commit/0f7c9d38a4fefa0cd1fae7f59bc4103c10274ace
  Author: Timothy Hatcher 
  Date:   2024-07-08 (Mon, 08 Jul 2024)

  Changed paths:
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h

  Log Message:
  ---
  Crash under WebExtensionContextProxy::enumerateFramesAndNamespaceObjects.
https://webkit.org/b/276337
rdar://129820399

Reviewed by Chris Dumez and Brian Weinstein.

Use forEach() when iterating m_extensionContentFrames, since it might be mutated
during the iteration as frames are added or removed.

* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp:
(WebKit::WebExtensionContextProxy::enumerateFramesAndNamespaceObjects):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:

Canonical link: https://commits.webkit.org/280753@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] 8b4305: Change _WKWebExtension creation methods to be asyn...

2024-07-03 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8b43053675f985642ddcad0b88f0bcf0219ad7c8
  
https://github.com/WebKit/WebKit/commit/8b43053675f985642ddcad0b88f0bcf0219ad7c8
  Author: Timothy Hatcher 
  Date:   2024-07-03 (Wed, 03 Jul 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMatchPattern.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPrivate.h

  Log Message:
  ---
  Change _WKWebExtension creation methods to be asynchronous.
https://webkit.org/b/276196
rdar://problem/131076684

Reviewed by Jeff Miller and Alex Christensen.

Add asynchronous convenience methods to _WKWebExtension so we can update these
to load the extension data on a background thread in the future (see bug 
276194).

Moved the existing init methods to _WKWebExtensionPrivate.h.

Also make sure the watchOS and tvOS stubs always return an unsupported error and
call the completion handlers.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm:
(+[_WKWebExtension extensionWithAppExtensionBundle:completionHandler:]): Added.
(+[_WKWebExtension extensionWithResourceBaseURL:completionHandler:]): Added.
(-[_WKWebExtension initWithAppExtensionBundle:error:]): Call the private method.
(-[_WKWebExtension _initWithAppExtensionBundle:error:]): Added.
(-[_WKWebExtension initWithResourceBaseURL:error:]): Call the private method.
(-[_WKWebExtension _initWithResourceBaseURL:error:]): Added.
(+[_WKWebExtension extensionWithAppExtensionBundle:]): Deleted.
(+[_WKWebExtension extensionWithResourceBaseURL:]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(-[_WKWebExtensionContext loadBackgroundContentWithCompletionHandler:]): Call 
completionHandler
with unsupported error.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.mm:
(-[_WKWebExtensionController loadExtensionContext:error:]): Return unsupported 
error.
(-[_WKWebExtensionController unloadExtensionContext:error:]): Ditto.
(-[_WKWebExtensionController fetchDataRecordsOfTypes:completionHandler:]): Call 
completionHandler.
(-[_WKWebExtensionController 
fetchDataRecordOfTypes:forExtensionContext:completionHandler:]): Ditto.
(-[_WKWebExtensionController 
removeDataOfTypes:forDataRecords:completionHandler:]): Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMatchPattern.mm:
(-[_WKWebExtensionMatchPattern initWithString:error:]): Return unsupported 
error.
(-[_WKWebExtensionMatchPattern initWithScheme:host:path:error:]): Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.mm:
(-[_WKWebExtensionMessagePort sendMessage:completionHandler:]): Call 
completionHandler.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPrivate.h: Moved init method 
here.
Added missing documentation comments.

Canonical link: https://commits.webkit.org/280642@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] 262101: EmberJS does not render with a dark theme in dark ...

2024-07-03 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 26210158488488cceee205996f24db30c91eee53
  
https://github.com/WebKit/WebKit/commit/26210158488488cceee205996f24db30c91eee53
  Author: Timothy Hatcher 
  Date:   2024-07-03 (Wed, 03 Jul 2024)

  Changed paths:
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsPanelsCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsPanels.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h

  Log Message:
  ---
  EmberJS does not render with a dark theme in dark mode.
https://webkit.org/b/276164
rdar://131001081

Reviewed by Jeff Miller.

When the appearance is initially set we might not have any namespace objects 
yet.
Since the appearance is global, we can just store it on the 
WebExtensionContextProxy.

* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsPanelsCocoa.mm:
(WebKit::WebExtensionAPIDevToolsPanels::themeName):
(WebKit::WebExtensionContextProxy::dispatchDevToolsPanelsThemeChangedEvent):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsPanels.h:
(WebKit::WebExtensionAPIDevToolsPanels::theme const): Deleted.
(WebKit::WebExtensionAPIDevToolsPanels::setTheme): Deleted.
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:

Canonical link: https://commits.webkit.org/280624@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] 857da8: declarativeNetRequest enabled rule sets store on W...

2024-06-25 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 857da87962a64df24a100199dfd8022f3012756a
  
https://github.com/WebKit/WebKit/commit/857da87962a64df24a100199dfd8022f3012756a
  Author: Timothy Hatcher 
  Date:   2024-06-25 (Tue, 25 Jun 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.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/_WKWebExtensionDeclarativeNetRequestRule.mm
M Source/WebKit/UIProcess/Extensions/WebExtension.h
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h

  Log Message:
  ---
  declarativeNetRequest enabled rule sets store on WebExtensionContext not 
WebExtension.
https://webkit.org/b/270579
rdar://problem/124147420

Reviewed by Brian Weinstein.

Added m_enabledStaticRulesetIDs to WebExtensionContext, and pre-populate it 
with the
enabled rules from WebExtension. Also reference m_enabledStaticRulesetIDs when 
checking
if a ruleset is enabled instead of WebExtension.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.h:
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm:
(WebKit::WebExtensionContext::declarativeNetRequestGetEnabledRulesets): 
Simplified.
(WebKit::WebExtensionContext::loadDeclarativeNetRequestRulesetStateFromStorage):
 Load the default state
or the saved state into m_enabledStaticRulesetIDs.
(WebKit::WebExtensionContext::declarativeNetRequestValidateRulesetIdentifiers): 
Simplified.
(WebKit::WebExtensionContext::declarativeNetRequestToggleRulesets): Ditto.
(WebKit::WebExtensionContext::declarativeNetRequestEnabledRulesetCount): 
Deleted.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::declarativeNetRequestRulesets): Return const to prevent 
modification.
(WebKit::WebExtension::declarativeNetRequestRuleset): Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::unloadDeclarativeNetRequestState):
(WebKit::WebExtensionContext::loadDeclarativeNetRequestRules):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/_WKWebExtensionDeclarativeNetRequestRule.mm:
* Source/WebKit/UIProcess/Extensions/WebExtension.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::declarativeNetRequestEnabledRulesetCount): Added.

Canonical link: https://commits.webkit.org/280354@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] 6c33e5: WebExtensionContext::unload needs to clear more st...

2024-06-20 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6c33e50ded39ce0ebb621dbd0918aa8bb477fe5f
  
https://github.com/WebKit/WebKit/commit/6c33e50ded39ce0ebb621dbd0918aa8bb477fe5f
  Author: Timothy Hatcher 
  Date:   2024-06-20 (Thu, 20 Jun 2024)

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

  Log Message:
  ---
  WebExtensionContext::unload needs to clear more state.
https://webkit.org/b/275706
rdar://problem/130224407

Reviewed by Jeff Miller.

Audited all member variables of WebExtensionContext and clear / reset the 
relevant ones in
unload() so they don't have lingering state and are ready for the next load().

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::unload): Clear all relevant member variables.
(WebKit::WebExtensionContext::unloadBackgroundWebView): Clear 
m_unloadBackgroundWebViewTimer.
(WebKit::WebExtensionContext::didFailNavigation): Added missing call to 
unloadBackgroundWebView().
(WebKit::WebExtensionContext::webViewWebContentProcessDidTerminate): Use 
unloadBackgroundWebView().

Canonical link: https://commits.webkit.org/280234@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] 8db235: WebExtensionContext::tabsUpdate and windowsUpdate ...

2024-06-20 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8db235e14a7fcce78fc3896d18b2259f7cf75406
  
https://github.com/WebKit/WebKit/commit/8db235e14a7fcce78fc3896d18b2259f7cf75406
  Author: Timothy Hatcher 
  Date:   2024-06-20 (Thu, 20 Jun 2024)

  Changed paths:
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIAlarmsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWindowsCocoa.mm
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  WebExtensionContext::tabsUpdate and windowsUpdate need to properly capture 
lambdas.
https://webkit.org/b/270804
rdar://problem/124393562

Reviewed by Jeff Miller.

Fix tabsUpdate, windowsUpdate, and tabsRemove to properly capture the lambdas’
variables so the completion handler blocks can be called async. Also fixed
alarmsCreate to protect the WebExtensionContext lambda capture with a Ref.

Updated the TestWebExtensionTab and TestWebExtensionWindow to call all the 
completion
handlers async so this is tested.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIAlarmsCocoa.mm:
(WebKit::WebExtensionContext::alarmsCreate):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsUpdate):
(WebKit::WebExtensionContext::tabsRemove):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWindowsCocoa.mm:
(WebKit::WebExtensionContext::windowsUpdate):
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionTab 
toggleReaderModeForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab 
detectWebpageLocaleForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab reloadForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab 
reloadFromOriginForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab goBackForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab goForwardForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab setParentTab:forWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab pinForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab unpinForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab muteForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab unmuteForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab 
duplicateForWebExtensionContext:withOptions:completionHandler:]):
(-[TestWebExtensionTab activateForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab selectForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab deselectForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionTab closeForWebExtensionContext:completionHandler:]):
(-[TestWebExtensionWindow 
setWindowState:forWebExtensionContext:completionHandler:]):
(-[TestWebExtensionWindow setFrame:forWebExtensionContext:completionHandler:]):
(-[TestWebExtensionWindow closeForWebExtensionContext:completionHandler:]):

Canonical link: https://commits.webkit.org/280233@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] d794fd: Crash at WebExtensionDynamicScripts::executeScript.

2024-06-20 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d794fd4aec27a6051daec59169dd28fc9426056d
  
https://github.com/WebKit/WebKit/commit/d794fd4aec27a6051daec59169dd28fc9426056d
  Author: Timothy Hatcher 
  Date:   2024-06-20 (Thu, 20 Jun 2024)

  Changed paths:
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 at WebExtensionDynamicScripts::executeScript.
https://webkit.org/b/275668
rdar://130154054

Reviewed by Jeff Miller.

The crash was happening because an `optional` was being accessed while not 
being checked for a value.
We don't need to use `optional` here, so this change removes the optional uses 
and uses `WTF::compactMap`
for the one remaining `optional` return to filter the `SourcePair` results into 
a `SourcePairs` `Vector`.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsExecuteScript):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm:
(WebKit::WebExtensionDynamicScripts::getSourcePairsForParameters):
(WebKit::WebExtensionDynamicScripts::executeScript):
(WebKit::WebExtensionDynamicScripts::injectStyleSheets):
(WebKit::WebExtensionDynamicScripts::removeStyleSheets):
* Source/WebKit/UIProcess/Extensions/WebExtensionDynamicScripts.h:

Canonical link: https://commits.webkit.org/280212@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] 96e74a: Crash at WebKit::WebExtensionContext::fireStorageC...

2024-06-18 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 96e74a542f6f7e6c11d7721f391c7d0e8de5a764
  
https://github.com/WebKit/WebKit/commit/96e74a542f6f7e6c11d7721f391c7d0e8de5a764
  Author: Timothy Hatcher 
  Date:   2024-06-18 (Tue, 18 Jun 2024)

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

  Log Message:
  ---
  Crash at WebKit::WebExtensionContext::fireStorageChangedEventIfNeeded.
https://webkit.org/b/275640
rdar://129782075

Reviewed by Brian Weinstein.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIStorageCocoa.mm:
(WebKit::WebExtensionContext::fireStorageChangedEventIfNeeded): Don't try to 
insert nil into
the dictionaries if the JSON fails to parse.

Canonical link: https://commits.webkit.org/280142@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] 4960ab: Crash at WebKit::WebExtensionDynamicScripts::WebEx...

2024-06-18 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4960abc4c6b70429c02166e1242ccee57f36fdb6
  
https://github.com/WebKit/WebKit/commit/4960abc4c6b70429c02166e1242ccee57f36fdb6
  Author: Timothy Hatcher 
  Date:   2024-06-18 (Tue, 18 Jun 2024)

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

  Log Message:
  ---
  Crash at 
WebKit::WebExtensionDynamicScripts::WebExtensionRegisteredScript::removeUserScripts.
https://webkit.org/b/275637
rdar://130111574

Reviewed by Brian Weinstein.

* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm:
(WebKit::WebExtensionContext::scriptingUnregisterContentScripts): Null-check 
the result of take()
since the scriptID might not be valid anymore, and it wont be found in the 
HashMap.

Canonical link: https://commits.webkit.org/280141@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] f1994d: Crash at com.apple.WebKit: -[_WKWebExtensionMessag...

2024-06-17 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f1994d68f985424f788a88fe4f01cd2e45ed3f5d
  
https://github.com/WebKit/WebKit/commit/f1994d68f985424f788a88fe4f01cd2e45ed3f5d
  Author: Timothy Hatcher 
  Date:   2024-06-17 (Mon, 17 Jun 2024)

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

  Log Message:
  ---
  Crash at com.apple.WebKit: -[_WKWebExtensionMessagePort 
sendMessage:completionHandler:].
https://webkit.org/b/275589
rdar://129687779

Reviewed by Brian Weinstein.

We need to allow `nil` to be sent to `_WKWebExtensionMessagePort`, which will 
be delivered as `undefined`.
This was the behavior in Safari 17, so we need to match to avoid breaking 
extensions.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.h: Added 
nullable to sendMessage:completionHandler:.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionMessagePort.mm:
(-[_WKWebExtensionMessagePort sendMessage:completionHandler:]): Removed 
NSParameterAssert.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMessagePortCocoa.mm:
(WebKit::WebExtensionMessagePort::sendMessage): Only call isValidJSONObject if 
message is not null.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPIRuntime, ConnectNative)): Removed 
nullable attributes.
(TestWebKitAPI::TEST(WKWebExtensionAPIRuntime, 
ConnectNativeWithInvalidMessage)): Ditto.
(TestWebKitAPI::TEST(WKWebExtensionAPIRuntime, 
ConnectNativeWithUndefinedMessage)): Added.

Canonical link: https://commits.webkit.org/280107@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] 5f3191: Safari hangs for 650ms to 1100ms in WebKit::WebExt...

2024-06-11 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5f3191a6ba07ef36bdc3b6fea7a7b944cf07fd16
  
https://github.com/WebKit/WebKit/commit/5f3191a6ba07ef36bdc3b6fea7a7b944cf07fd16
  Author: Timothy Hatcher 
  Date:   2024-06-11 (Tue, 11 Jun 2024)

  Changed paths:
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:
  ---
  Safari hangs for 650ms to 1100ms in 
WebKit::WebExtensionWindow::tabs(WebKit::WebExtensionWindow::SkipValidation).
https://webkit.org/b/275378
rdar://129456659

Reviewed by Brian Weinstein.

The validation added in e1a34394bf94 to check if the tab tab was contained in 
the window
ended up being recursive with how it is called multiple times, and per tab when 
opening
a new window that has a lot of tabs. Just remove this validation, since it 
isn't needed.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::didCloseTab): Drop SkipValidation::Yes param.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::window const): Remove validation.
(WebKit::WebExtensionTab::isActive const): Drop SkipValidation::Yes param.
(WebKit::WebExtensionTab::isPrivate const): Ditto.
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:

Canonical link: https://commits.webkit.org/279929@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] 2234ec: Crash under WebKit::WebExtensionContext::didMoveTab.

2024-06-11 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2234ec7559e04c7ce9ea2cf6bd40ff717e8264f2
  
https://github.com/WebKit/WebKit/commit/2234ec7559e04c7ce9ea2cf6bd40ff717e8264f2
  Author: Timothy Hatcher 
  Date:   2024-06-11 (Tue, 11 Jun 2024)

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

  Log Message:
  ---
  Crash under WebKit::WebExtensionContext::didMoveTab.
https://webkit.org/b/275374
rdar://129507386

Reviewed by Brian Weinstein.

Add a null check for newWindow, since if both newWindow and oldWindow are null
we will follow the first case and try to deference newWindow accessing 
identifier().

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

Canonical link: https://commits.webkit.org/279928@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] 180a53: BitWarden hangs when login fails or logging out of...

2024-06-10 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 180a5367d48b98a3217ad772b702cc652e9c178d
  
https://github.com/WebKit/WebKit/commit/180a5367d48b98a3217ad772b702cc652e9c178d
  Author: Timothy Hatcher 
  Date:   2024-06-10 (Mon, 10 Jun 2024)

  Changed paths:
M Source/WebKit/Shared/Extensions/WebExtensionUtilities.h
M Source/WebKit/Shared/Extensions/WebExtensionUtilities.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/WebExtensionAPIWebPageNamespaceCocoa.mm
M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm
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/WebExtensionAPIWebPageNamespace.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindows.h
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

  Log Message:
  ---
  BitWarden hangs when login fails or logging out of the extension.
https://webkit.org/b/275274
rdar://129016688

Reviewed by Brian Weinstein.

BitWarden is reloading the background page when a logout occurs. This causes 
the loop
they have to send a 'sleep' message every 10 seconds to the native app to 
instantly
throw an exception inside a generator function. Since the native message is no 
longer
yielding a promise, the loop never exits to the runloop. WebKit is waiting for 
the
runloop to exit to teardown the document, but it is stuck in the infinite loop.

To fix this, we need to partially revert 91a979b and stop bailing early in the 
bindings
code when the page can't be found. Only a couple properties need the page to 
answer
the `isPropertyAllowed()` call, so those properties can just do a separate null 
check.

We also need to return a promise instead of `undefined` when the page isn't 
found
and it is needed for a function call, like `runtime.sendNativeMessage()`. This 
required
moving the generated code down closer to the call site, and returning a 
pre-rejected
promise with an unknown error message instead of `undefined`.

* Source/WebKit/Shared/Extensions/WebExtensionUtilities.h:
* Source/WebKit/Shared/Extensions/WebExtensionUtilities.mm:
(WebKit::toJSRejectedPromise): Added. Helper to make a rejected promise.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm:
(WebKit::WebExtensionAPIExtension::isPropertyAllowed): Changed WebPage to a 
pointer.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:
(WebKit::WebExtensionAPINamespace::isPropertyAllowed): Changed WebPage to a 
pointer.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionAPIRuntime::isPropertyAllowed): Changed WebPage to a 
pointer.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm:
(WebKit::WebExtensionAPIStorageArea::isPropertyAllowed): Changed WebPage to a 
pointer.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageCocoa.mm:
(WebKit::WebExtensionAPIStorage::isPropertyAllowed): Changed WebPage to a 
pointer.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm:
(WebKit::WebExtensionAPITabs::isPropertyAllowed): Changed WebPage to a pointer.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebPageNamespaceCocoa.mm:
(WebKit::WebExtensionAPIWebPageNamespace::isPropertyAllowed): Changed WebPage 
to a pointer.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm:
(WebKit::WebExtensionAPIWindows::isPropertyAllowed): Changed WebPage to a 
pointer.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorage.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h

[webkit-changes] [WebKit/WebKit] e1a343: Change some THROW_UNLESS calls into RELEASE_LOG_ER...

2024-06-02 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e1a34394bf941789aafa0a92a13a8c605b6a4f1e
  
https://github.com/WebKit/WebKit/commit/e1a34394bf941789aafa0a92a13a8c605b6a4f1e
  Author: Timothy Hatcher 
  Date:   2024-06-02 (Sun, 02 Jun 2024)

  Changed paths:
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h
M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.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/WebExtensionTab.h
M Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h
M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  ---
  Change some THROW_UNLESS calls into RELEASE_LOG_ERROR instead.
https://webkit.org/b/275035
rdar://problem/129138876

Reviewed by Brady Eidson.

Change the tabs / activeTab and mainWebView exceptions into error logs.
This also removes webViewsForWebExtensionContext: which is no longer used.
Fixed some test harness code for tabs, so they are in the correct state
and not hitting these ASSERTs in debug runs of the tests.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionTab.h:
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm:
(WebKit::WebExtensionContext::cookiesGetAllCookieStores):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::getOrCreateTab const): Fix issue with private 
tabs.
(WebKit::WebExtensionContext::getCurrentTab const):
(WebKit::WebExtensionContext::didCloseTab):
(WebKit::WebExtensionContext::reportWebViewConfigurationErrorIfNeeded const): 
Simplify
by letting the logging in the webView() method do the work.
(WebKit::WebExtensionContext::openInspectors const):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::WebExtensionTab):
(WebKit::WebExtensionTab::window const):
(WebKit::WebExtensionTab::mainWebView const):
(WebKit::WebExtensionTab::isActive const):
(WebKit::WebExtensionTab::isPrivate const):
(WebKit::WebExtensionTab::processes const):
(WebKit::WebExtensionTab::webViews const): Deleted.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm:
(WebKit::WebExtensionWindow::tabs const):
(WebKit::WebExtensionWindow::activeTab const):
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h:
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionWindow setTabs:]):
(-[TestWebExtensionWindow openNewTabAtIndex:]):
(-[TestWebExtensionWindow closeTab:windowIsClosing:]):
(-[TestWebExtensionWindow replaceTab:withTab:]):

Canonical link: https://commits.webkit.org/279630@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] 766629: Fire open and closed events when a tab is replaced.

2024-06-02 Thread Timothy Hatcher
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 766629a0386fda276dd5d0db256a440056efd16c
  
https://github.com/WebKit/WebKit/commit/766629a0386fda276dd5d0db256a440056efd16c
  Author: Timothy Hatcher 
  Date:   2024-06-02 (Sun, 02 Jun 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/279629@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] 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


  1   2   3   >