[webkit-changes] [WebKit/WebKit] 19072c: Crash in WebKit::WebExtensionContext::permissionSt...
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.
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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 /...
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...
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.
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...
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...
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.
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.
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.
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...
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...
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...
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...
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...
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...
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...
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...
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` ...
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...
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...
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().
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...
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...
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...
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...
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.
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...
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...
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...
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...
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 ...
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...
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.
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.
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...
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.
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...
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...
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...
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...
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.
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...
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...
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...
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...
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...
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().
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...
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...
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...
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...
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(...
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.
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...
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...
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.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: bc58f493f50e6787944a0044979ea5a58b223b9a https://github.com/WebKit/WebKit/commit/bc58f493f50e6787944a0044979ea5a58b223b9a Author: Timothy Hatcher Date: 2024-02-08 (Thu, 08 Feb 2024) Changed paths: M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h Log Message: --- Crash when closing DashLane extension popup. https://webkit.org/b/269041 rdar://problem/122599318 Reviewed by Alex Christensen. * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h: (WebKit::WebExtensionAPIPort::~WebExtensionAPIPort): Set m_disconnected to true to prevent the disconnect event from firing. We can't call into JavaScript during garbage collection. Canonical link: https://commits.webkit.org/274344@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 30e54a: Open links to external URLs in an action popup in ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 30e54aa959476ab18f558e3f5c6cf8ea8aaef965 https://github.com/WebKit/WebKit/commit/30e54aa959476ab18f558e3f5c6cf8ea8aaef965 Author: Timothy Hatcher Date: 2024-02-08 (Thu, 08 Feb 2024) Changed paths: M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm Log Message: --- Open links to external URLs in an action popup in a new tab. https://webkit.org/b/269020 rdar://122110236 Reviewed by Brian Weinstein. When a link is targeting a new widow or trying to navigate to a non-extension URL in the main frame, use the tabs delegate to open a new tab at the index after the current tab. * Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm: (WebKit::WebExtensionContext::tabsCreate): Make the WebPageProxyIdentifier optional, since it isn't always needed and will default to the current window if it is missing. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm: (-[_WKWebExtensionActionWebViewDelegate webView:decidePolicyForNavigationAction:decisionHandler:]): Use openNewTab() to open the target URL in a tab. (-[_WKWebExtensionActionWebViewDelegate webViewWebContentProcessDidTerminate:]): Null check. (-[_WKWebExtensionActionWebViewDelegate webViewDidClose:]): Ditto. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm: (WebKit::WebExtensionContext::openNewTab): Added. Simple wrapper around tabsCreate(). * Source/WebKit/UIProcess/Extensions/WebExtensionContext.h: * Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in: * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm: (TEST(WKWebExtensionAPIAction, NavigationOpensInNewTab)): Added new test. Canonical link: https://commits.webkit.org/274338@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 91a979: Add interfaces and stubs for the Web Extensions De...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 91a979be6c857b0b172fb41e31c80d18bf9d26f3 https://github.com/WebKit/WebKit/commit/91a979be6c857b0b172fb41e31c80d18bf9d26f3 Author: Timothy Hatcher Date: 2024-02-08 (Thu, 08 Feb 2024) Changed paths: M Source/WebKit/DerivedSources-input.xcfilelist M Source/WebKit/DerivedSources-output.xcfilelist M Source/WebKit/DerivedSources.make M Source/WebKit/WebKit.xcodeproj/project.pbxproj A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsCocoa.mm A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsElementsPanelCocoa.mm A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionPanelCocoa.mm A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionSidebarPaneCocoa.mm A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsNetworkCocoa.mm A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsPanelsCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevTools.h A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsElementsPanel.h A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsExtensionPanel.h A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsExtensionSidebarPane.h A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsInspectedWindow.h A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsNetwork.h A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsPanels.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorage.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindows.h M Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevTools.idl A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsElementsPanel.idl A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsExtensionPanel.idl A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsExtensionSidebarPane.idl A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsInspectedWindow.idl A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsNetwork.idl A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsPanels.idl M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl Log Message: --- Add interfaces and stubs for the Web Extensions DevTools APIs. https://webkit.org/b/246485 rdar://problem/114823326 Reviewed by Brian Weinstein. * Source/WebKit/DerivedSources-input.xcfilelist: * Source/WebKit/DerivedSources-output.xcfilelist: * Source/WebKit/DerivedSources.make: * Source/WebKit/WebKit.xcodeproj/project.pbxproj: * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsCocoa.mm: Added. (WebKit::WebExtensionAPIDevTools::inspectedWindow): (WebKit::WebExtensionAPIDevTools::network): (WebKit::WebExtensionAPIDevTools::panels): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsElementsPanelCocoa.mm: Added. (WebKit::WebExtensionAPIDevToolsElementsPanel::createSidebarPane): (WebKit::WebExtensionAPIDevToolsElementsPanel::onSelectionChanged): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionPanelCocoa.mm: Added. (WebKit::WebExtensionAPIDevToolsExtensionPanel::onShown): (WebKit::WebExtensionAPIDevToolsExtensionPanel::onHidden): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionSidebarPaneCocoa.mm: Added. (WebKit::WebExtensionAPIDevToolsExtensionSidebarPane::setPage): (WebKit::WebExtensionAPIDevToolsExtensionSidebarPane::setExpression): (WebKit
[webkit-changes] [WebKit/WebKit] 153a79: Crash at com.apple.WebKit: WebKit::WebExtensionCon...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 153a7995798830acddfc99d26d0a087a5f3de1fa https://github.com/WebKit/WebKit/commit/153a7995798830acddfc99d26d0a087a5f3de1fa Author: Timothy Hatcher Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm M Source/WebKit/UIProcess/Extensions/WebExtensionAction.h Log Message: --- Crash at com.apple.WebKit: WebKit::WebExtensionController::wrapper(). https://webkit.org/b/268943 rdar://122480360 Reviewed by Brian Weinstein. Add null checks for the extension controller, since the extension context might not be loaded yet, or has since unloaded. Also we can't cache if the delegate responds to the present method, since the extension controller can change or the delegate can change. Also check immediately before it is used. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm: (WebKit::WebExtensionAction::WebExtensionAction): Don't cache the responds result. (WebKit::WebExtensionAction::fallbackAction const): Add null check for consistency. (WebKit::WebExtensionAction::canProgrammaticallyPresentPopup const): Added. (WebKit::WebExtensionAction::presentPopupWhenReady): Check canProgrammaticallyPresentPopup(). (WebKit::WebExtensionAction::readyToPresentPopup): Check delegate and null check controller. * Source/WebKit/UIProcess/Extensions/WebExtensionAction.h: Canonical link: https://commits.webkit.org/274251@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 23ef21: ASSERT traversing frames under WebExtensionContext...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 23ef211d3842b6d030c4f961ddf26a83a27b56ae https://github.com/WebKit/WebKit/commit/23ef211d3842b6d030c4f961ddf26a83a27b56ae Author: Timothy Hatcher Date: 2024-02-06 (Tue, 06 Feb 2024) Changed paths: M Source/WebKit/Shared/API/APIFrameHandle.h M Source/WebKit/UIProcess/API/APIFrameInfo.cpp M Source/WebKit/UIProcess/API/APIFrameTreeNode.h Log Message: --- ASSERT traversing frames under WebExtensionContext::webNavigationTraverseFrameTreeForFrame. https://webkit.org/b/268775 rdar://problem/122331877 Reviewed by Alex Christensen. Add some more ASSERTs to try to catch where these bad frame identifiers are being introduced. * Source/WebKit/Shared/API/APIFrameHandle.h: * Source/WebKit/UIProcess/API/APIFrameInfo.cpp: (API::FrameInfo::FrameInfo): * Source/WebKit/UIProcess/API/APIFrameTreeNode.h: Canonical link: https://commits.webkit.org/274152@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 8dabe5: Crash when closing page while extension is waiting...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8dabe5207fb4cd442388423dc0aa823e34b3a4a9 https://github.com/WebKit/WebKit/commit/8dabe5207fb4cd442388423dc0aa823e34b3a4a9 Author: Timothy Hatcher Date: 2024-02-05 (Mon, 05 Feb 2024) Changed paths: M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIActionCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIEventCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIMenusCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebNavigationCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebNavigationEventCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebRequestEventCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsEventCocoa.mm M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIAction.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIEvent.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIMenus.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebNavigation.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebNavigationEvent.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebRequestEvent.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindows.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindowsEvent.h M Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebNavigation.idl M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebRequest.idl Log Message: --- Crash when closing page while extension is waiting on storage callback. https://webkit.org/b/268767 rdar://problem/122328331 Reviewed by Brian Weinstein. Teach the Web Extension code generator to pass references for the page and frame to the implementation after null checking them. This avoids all the clients needing to check, and makes the implementations safer. Log an error if they are null, and return undefined to JavaScript. An exception would not be useful here, since the page is being destroyed already. Also use RefPtr for the impl, page, and frame pointers so the lifetime is guaranteed for the current call duration. Also stop setting ObjC types to nil by default, since the generated code is ARC. Do similar for RefPtr types, since they also default to nullptr. * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIActionCocoa.mm: (WebKit::WebExtensionAPIAction::openPopup): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIEventCocoa.mm: (WebKit::WebExtensionAPIEvent::addListener): (WebKit::WebExtensionAPIEvent::removeListener): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm: (WebKit::WebExtensionAPIExtension::isInIncognitoContext): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIMenusCocoa.mm: (WebKit::WebExtensionAPIMenus::createMenu): (WebKit::WebExtensionAPIMenus::update): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm: (WebKit::WebExtensionAPIPort::postMessage): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm: (WebKit::WebExtensionAPIRuntime::getFrameId): (WebKit::WebExtensionAPIRuntime::sendMessage): (WebKit::WebExtensionAPIRuntime::connect): (WebKit::WebExtensionAPIRuntime::sendNativeMessage): (WebKit::WebExtensionAPIRuntime::connectNative): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm: (WebKit::WebExtensionAPIStorageArea::get): (WebKit::WebExtensionAPIStorageArea::getBytesInUse): (WebKit::WebExtensionAPIStorageArea::set): (WebKit::WebExtensionAPIStorageArea::remove): (WebKit::WebExtensionAPIStorageArea::clear): (WebKit::WebExtensionAPIStorageArea::setAccessLevel): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm: (WebKit::WebExtensionAPITabs::createTab): (WebKit::WebExtensionAPITabs::query
[webkit-changes] [WebKit/WebKit] 1e7cb6: Don't fire window or tab events until the browser ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 1e7cb6de6869907b5b840532a65c37783bf9b41e https://github.com/WebKit/WebKit/commit/1e7cb6de6869907b5b840532a65c37783bf9b41e Author: Timothy Hatcher Date: 2024-02-05 (Mon, 05 Feb 2024) Changed paths: M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h M Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm Log Message: --- Don't fire window or tab events until the browser calls didOpenTab: and didOpenWindow:. https://webkit.org/b/268671 rdar://122143707 Reviewed by Brian Weinstein. Be more protective of when we fire window and tab events, so we never fire events if the window or tab hasn't fired the onCreated event. Also add more smart pointer use, assertions, and error logging to catch misuse. While fixing this, I discovered the WKWebExtensionAPITabs.QueryWithPrivateAccess test was not correct and was missing the tests for the incognito windows. Fixed things up there, and added optional chaining to avoid exceptions when things are incorrectly undefined / null. * Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm: (toAPI): * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm: (WebKit::WebExtensionContext::postAsyncNotification): (WebKit::WebExtensionContext::removeGrantedPermissionMatchPatterns): (WebKit::WebExtensionContext::getOrCreateWindow const): (WebKit::WebExtensionContext::getWindow const): (WebKit::WebExtensionContext::forgetWindow const): (WebKit::WebExtensionContext::getOrCreateTab const): (WebKit::WebExtensionContext::getTab const): (WebKit::WebExtensionContext::getCurrentTab const): (WebKit::WebExtensionContext::forgetTab const): (WebKit::WebExtensionContext::populateWindowsAndTabs): (WebKit::WebExtensionContext::isValidWindow): (WebKit::WebExtensionContext::isValidTab): (WebKit::WebExtensionContext::openWindows const): (WebKit::WebExtensionContext::openTabs const): (WebKit::WebExtensionContext::frontmostWindow const): (WebKit::WebExtensionContext::didOpenWindow): (WebKit::WebExtensionContext::didCloseWindow): (WebKit::WebExtensionContext::didFocusWindow): (WebKit::WebExtensionContext::didOpenTab): (WebKit::WebExtensionContext::didCloseTab): (WebKit::WebExtensionContext::didActivateTab): (WebKit::WebExtensionContext::didSelectOrDeselectTabs): (WebKit::WebExtensionContext::didMoveTab): (WebKit::WebExtensionContext::didReplaceTab): (WebKit::WebExtensionContext::didChangeTabProperties): (WebKit::WebExtensionContext::resourceLoadDidSendRequest): (WebKit::WebExtensionContext::resourceLoadDidPerformHTTPRedirection): (WebKit::WebExtensionContext::resourceLoadDidReceiveChallenge): (WebKit::WebExtensionContext::resourceLoadDidReceiveResponse): (WebKit::WebExtensionContext::resourceLoadDidCompleteWithError): * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm: (WebKit::WebExtensionTab::parameters const): (WebKit::WebExtensionTab::index const): (WebKit::WebExtensionTab::parentTab const): (WebKit::WebExtensionTab::mainWebView const): (WebKit::WebExtensionTab::webViews const): (WebKit::WebExtensionTab::isOpen const): (WebKit::WebExtensionTab::isActive const): (WebKit::WebExtensionTab::isPrivate const): * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm: (WebKit::WebExtensionWindow::activeTab const): (WebKit::WebExtensionWindow::isOpen const): * Source/WebKit/UIProcess/Extensions/WebExtensionContext.h: (WebKit::WebExtensionContext::openTabs const): Deleted. * Source/WebKit/UIProcess/Extensions/WebExtensionTab.h: (WebKit::WebExtensionTab::didOpen): (WebKit::WebExtensionTab::didClose): * Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h: (WebKit::WebExtensionWindow::didOpen): (WebKit::WebExtensionWindow::didClose): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm: (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/274103@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 856c43: Add a Web Extension test for activeTab and action ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 856c436943899e53a2097d577ea4685d34a02818 https://github.com/WebKit/WebKit/commit/856c436943899e53a2097d577ea4685d34a02818 Author: Timothy Hatcher Date: 2024-02-02 (Fri, 02 Feb 2024) Changed paths: M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIMenus.mm Log Message: --- Add a Web Extension test for activeTab and action menus. https://webkit.org/b/268639 rdar://problem/122194046 Reviewed by Brian Weinstein. Add a new test that verifies that activeTab does grant visibility into the tab's URL and title when invoking an action's menu item. We already had a test like this for context menu items. This was mentioned in: https://github.com/mdn/browser-compat-data/issues/20592 * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIMenus.mm: (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/274019@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 6dcf6d: Build fix for watchOS and tvOS.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 6dcf6d1fe6e87803062a811cdff5961c2ee0e93c https://github.com/WebKit/WebKit/commit/6dcf6d1fe6e87803062a811cdff5961c2ee0e93c Author: Timothy Hatcher Date: 2024-02-02 (Fri, 02 Feb 2024) Changed paths: M Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h Log Message: --- Build fix for watchOS and tvOS. Unreviewed build fix. * Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm: * Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h: Move the non-extension code out from behind ENABLE(WK_WEB_EXTENSIONS). Canonical link: https://commits.webkit.org/273980@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d6da4e: Build fix for watchOS and tvOS.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d6da4ee644cba8a3899f47da4f0564707849e972 https://github.com/WebKit/WebKit/commit/d6da4ee644cba8a3899f47da4f0564707849e972 Author: Timothy Hatcher Date: 2024-02-02 (Fri, 02 Feb 2024) Changed paths: M Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h Log Message: --- Build fix for watchOS and tvOS. Unreviewed build fix. * Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm: Guard JSValue category by JSC_OBJC_API_ENABLED. * Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h: Moved JSValue category outside ENABLE(WK_WEB_EXTENSIONS). Canonical link: https://commits.webkit.org/273979@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 417a00: Build fix for watchOS and tvOS.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 417a000f33639885da95a1e16eb9d8f685629776 https://github.com/WebKit/WebKit/commit/417a000f33639885da95a1e16eb9d8f685629776 Author: Timothy Hatcher Date: 2024-02-02 (Fri, 02 Feb 2024) Changed paths: M Source/WebKit/Platform/cocoa/CocoaHelpers.mm Log Message: --- Build fix for watchOS and tvOS. Unreviewed build fix. * Source/WebKit/Platform/cocoa/CocoaHelpers.mm: Include all for JSC_OBJC_API_ENABLED define. Canonical link: https://commits.webkit.org/273976@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] eed034: Build fix for watchOS and tvOS.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: eed034158e09adb984454607fd35aea713e71c55 https://github.com/WebKit/WebKit/commit/eed034158e09adb984454607fd35aea713e71c55 Author: Timothy Hatcher Date: 2024-02-01 (Thu, 01 Feb 2024) Changed paths: M Source/WebKit/Platform/cocoa/CocoaHelpers.mm Log Message: --- Build fix for watchOS and tvOS. Unreviewed build fix. * Source/WebKit/Platform/cocoa/CocoaHelpers.mm: (WebKit::encodeJSONString): Wrap JSValue use in JSC_OBJC_API_ENABLED. (WebKit::encodeJSONData): Ditto. Canonical link: https://commits.webkit.org/273968@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 944eaf: Ghostery throws exception trying to use storageAre...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 944eaf18a9d63ee99bcbb6ad1fb93f8b3d210cae https://github.com/WebKit/WebKit/commit/944eaf18a9d63ee99bcbb6ad1fb93f8b3d210cae Author: Timothy Hatcher Date: 2024-02-01 (Thu, 01 Feb 2024) Changed paths: M Source/WebKit/Platform/cocoa/CocoaHelpers.mm M Source/WebKit/Shared/Extensions/WebExtensionUtilities.h M Source/WebKit/Shared/Extensions/WebExtensionUtilities.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm M Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h M Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIStorageArea.idl M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIStorage.mm Log Message: --- Ghostery throws exception trying to use storageArea.set(). https://webkit.org/b/268565 rdar://problem/122118152 Reviewed by Jeff Miller. We need to use JavaScript's native JSON encoder for storage, since extensions like Ghostery use toJSON() functions on custom objects to set data in storage. Teach the code generator how to convert only the top-level keys of a dictionary while having all the values be JSValue. This allows for the convenience of a dictionary for the keys, and true values for conversion with JavaScript's JSON stringifier. * Source/WebKit/Platform/cocoa/CocoaHelpers.mm: (WebKit::encodeJSONString): Use JSValue's _toJSONString when it is a JSValue. (WebKit::encodeJSONData): Ditto. * Source/WebKit/Shared/Extensions/WebExtensionUtilities.h: * Source/WebKit/Shared/Extensions/WebExtensionUtilities.mm: (WebKit::anyItemsExceedQuota): Added keyWithError out param for better error logging. * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm: (WebKit::WebExtensionAPIStorageArea::set): Record JSON/quota errors per key for debugging ease. * Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm: (WebKit::toNSDictionary): Added ValuePolicy key to stop at top-level. * Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h: * Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm: (_platformTypeConstructor): Added support for NSDictionary=StopAtTopLevel attribute. * Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIStorageArea.idl: (set): Use NSDictionary=StopAtTopLevel for items. * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIStorage.mm: (TestWebKitAPI::TEST): Added new test, and also test quota and null. Canonical link: https://commits.webkit.org/273949@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ead1bd: WebExtensionControllerProxy ASSERT in WebProcess w...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ead1bd233aac711efb8547ff8bcf6043cbf99af8 https://github.com/WebKit/WebKit/commit/ead1bd233aac711efb8547ff8bcf6043cbf99af8 Author: Timothy Hatcher Date: 2024-01-31 (Wed, 31 Jan 2024) Changed paths: M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp M Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm M Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.cpp Log Message: --- WebExtensionControllerProxy ASSERT in WebProcess when loading a page. https://webkit.org/b/268511 rdar://problem/122051926 Reviewed by Jeff Miller. The check for HashMap `contains()` ASSERTs return `true`, even though the WeakPtr is null. Check if the pointer is null instead of just contained in the map. Change the `WeakPtr` to be `WeakRef`, to better signal that the map should be only non-null references. Also be explicit about the smart pointers. * Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp: (WebKit::webExtensionContexts): (WebKit::WebExtensionContext::get): (WebKit::WebExtensionContext::WebExtensionContext): * Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp: (WebKit::webExtensionControllers): (WebKit::WebExtensionController::get): (WebKit::WebExtensionController::WebExtensionController): * Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm: (WebKit::webExtensionContextProxies): (WebKit::WebExtensionContextProxy::get): (WebKit::WebExtensionContextProxy::WebExtensionContextProxy): (WebKit::WebExtensionContextProxy::~WebExtensionContextProxy): (WebKit::WebExtensionContextProxy::getOrCreate): * Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.cpp: (WebKit::webExtensionControllerProxies): (WebKit::WebExtensionControllerProxy::get): (WebKit::WebExtensionControllerProxy::getOrCreate): (WebKit::WebExtensionControllerProxy::WebExtensionControllerProxy): (WebKit::WebExtensionControllerProxy::~WebExtensionControllerProxy): Canonical link: https://commits.webkit.org/273880@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] f27c53: Clean up contentScriptWorld and userContentControl...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f27c5302e2aab73864ddcdfe3d0878ea8767aa06 https://github.com/WebKit/WebKit/commit/f27c5302e2aab73864ddcdfe3d0878ea8767aa06 Author: Timothy Hatcher Date: 2024-01-31 (Wed, 31 Jan 2024) Changed paths: M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h Log Message: --- Clean up contentScriptWorld and userContentControllers Web Extension code. https://webkit.org/b/268484 rdar://problem/122029362 Reviewed by Brian Weinstein and Jeff Miller. Add a helper for getting the current content controllers for a context, to avoid the current hasAccessInPrivateBrowsing() check in multiple places. Also add some ASSERTs to ensure contentScriptWorld() is only used when it is known. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm: (WebKit::WebExtensionContext::setHasAccessInPrivateBrowsing): (WebKit::WebExtensionContext::addInjectedContent): (WebKit::WebExtensionContext::removeInjectedContent): (WebKit::WebExtensionContext::removeDeclarativeNetRequestRules): (WebKit::WebExtensionContext::compileDeclarativeNetRequestRules): * Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp: (WebKit::WebExtensionContext::userContentControllers const): Added. * Source/WebKit/UIProcess/Extensions/WebExtensionContext.h: * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm: (WebKit::WebExtensionContextProxy::dispatchRuntimeMessageEvent): (WebKit::WebExtensionContextProxy::dispatchRuntimeConnectEvent): * Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h: Canonical link: https://commits.webkit.org/273845@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 26040f: Remove contains check for tabs and windows.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 26040f2c9126e8b0e6591aa69177c58d2f8c8ed3 https://github.com/WebKit/WebKit/commit/26040f2c9126e8b0e6591aa69177c58d2f8c8ed3 Author: Timothy Hatcher Date: 2024-01-29 (Mon, 29 Jan 2024) Changed paths: M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h Log Message: --- Remove contains check for tabs and windows. https://webkit.org/b/268342 rdar://problem/121887064 Reviewed by Brian Weinstein. The "Window returned by windowForWebExtensionContext: does not contain the tab" exception is hard to avoid when the tabs is being created, and not in a window yet. This exception is causing more issues than is solves currently, so we should just remove it for now. All existing code paths that use window() or index() properly check for nullptr or notFound. Also adopt the fallbackAction() helper in a couple places I missed. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm: (WebKit::WebExtensionAction::hasUnreadBadgeText const): Use fallbackAction(). (WebKit::WebExtensionAction::setHasUnreadBadgeText): Ditto. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm: (WebKit::WebExtensionContext::didCloseTab): Stop using SkipContainsCheck::Yes. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm: (WebKit::WebExtensionTab::window const): Removed SkipContainsCheck param. (WebKit::WebExtensionTab::index const): Remove contains check. (WebKit::WebExtensionTab::isPrivate const): Stop using SkipContainsCheck::Yes. * Source/WebKit/UIProcess/Extensions/WebExtensionTab.h: Canonical link: https://commits.webkit.org/273703@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 2f4ea4: Crash trying to load tabPageIdentifiers() and popu...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 2f4ea4c094b72386cd25be293b6b6fa2c67064b1 https://github.com/WebKit/WebKit/commit/2f4ea4c094b72386cd25be293b6b6fa2c67064b1 Author: Timothy Hatcher Date: 2024-01-25 (Thu, 25 Jan 2024) Changed paths: M Source/WebKit/UIProcess/API/APIPageConfiguration.cpp M Source/WebKit/UIProcess/API/APIPageConfiguration.h M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionURLSchemeHandlerCocoa.mm M Source/WebKit/UIProcess/Extensions/WebExtensionAction.h M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h M Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIExtension.mm Log Message: --- Crash trying to load tabPageIdentifiers() and popupPageIdentifiers(). https://webkit.org/b/268105 rdar://120867910 Reviewed by Brian Weinstein. Clean up how we track extension tab and action pages, so we don't need to loop over openTabs(), which is not safe to do while a WKWebView is being created. Also clean up WKWebViewConfiguration, by not storing the WebExtensionController as data members, when they are already stored on API::PageConfiguration. Also added requiredWebExtensionBaseURL() to API::PageConfiguration. Also made a few more tab and window getters on WebExtensionContext be const, to allow use inside other const functions, like parameters(). * Source/WebKit/UIProcess/API/APIPageConfiguration.cpp: (API::PageConfiguration::requiredWebExtensionBaseURL const): Added. (API::PageConfiguration::setRequiredWebExtensionBaseURL): Added. (API::PageConfiguration::webExtensionController const): Made const. (API::PageConfiguration::weakWebExtensionController const): Ditto. * Source/WebKit/UIProcess/API/APIPageConfiguration.h: * Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _requiredWebExtensionBaseURL]): Use APIPageConfiguration. (-[WKWebViewConfiguration _setRequiredWebExtensionBaseURL:]): Ditto. (-[WKWebViewConfiguration _strongWebExtensionController]): Ditto. (-[WKWebViewConfiguration _webExtensionController]): Ditto. (-[WKWebViewConfiguration _setWebExtensionController:]): Ditto. (-[WKWebViewConfiguration _weakWebExtensionController]): Ditto. (-[WKWebViewConfiguration _setWeakWebExtensionController:]): Ditto. (-[WKWebViewConfiguration _setShouldRelaxThirdPartyCookieBlocking:]): Ditto. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm: (WebKit::WebExtensionAction::fallbackAction const): Added helper. (WebKit::WebExtensionAction::icon): Use fallbackAction(). (WebKit::WebExtensionAction::popupPath const): Ditto. (WebKit::WebExtensionAction::popupWebView): Use new addPopupPage() method. (WebKit::WebExtensionAction::label const): Use fallbackAction(). (WebKit::WebExtensionAction::badgeText const): Ditto. (WebKit::WebExtensionAction::isEnabled const): Ditto. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm: (WebKit::WebExtensionContext::isURLForThisExtension const): Added isValid() to bail earlier. (WebKit::WebExtensionContext::getOrCreateWindow const): Made const. (WebKit::WebExtensionContext::getWindow const): Ditto. (WebKit::WebExtensionContext::getOrCreateTab const): Ditto. (WebKit::WebExtensionContext::getTab const): Ditto. (WebKit::WebExtensionContext::getCurrentTab const): Ditto. (WebKit::WebExtensionContext::focusedWindow const): Ditto. (WebKit::WebExtensionContext::frontmostWindow const): Ditto. (WebKit::WebExtensionContext::popupPageIdentifiers const): Use the new map to build the Vector. (WebKit::WebExtensionContext::tabPageIdentifiers const): Use the new map to build the Vector. (WebKit::WebExtensionContext::addExtensionTabPage): Added. (WebKit::WebExtensionContext::relatedWebView): Simplified by using requiredWebExtensionBaseURL(). * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionURLSchemeHandlerCocoa.mm: (WebKit::WebExtensionURLSchemeHandler::platformStartTask): Call addExtensionTabPage(). * Source/WebKit/UIProcess/Extensions/WebExtensionContext.h: * Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp: (WebKit::WebExtensionController::parameters const): Use WTF::map(). * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIExtension.mm: (TestWebKitAPI::TEST): Tweak test to conver another case. Correct test that was logging a JSON error for object cycles. Canonical link: https://commits.webkit.org/273550@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] eaff76: Add a hasUnreadBadgeText property to _WKWebExtensi...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: eaff760b4a9ea37d5bbf33fd6d8f775b4c845135 https://github.com/WebKit/WebKit/commit/eaff760b4a9ea37d5bbf33fd6d8f775b4c845135 Author: Timothy Hatcher Date: 2024-01-24 (Wed, 24 Jan 2024) Changed paths: M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm M Source/WebKit/UIProcess/Extensions/WebExtensionAction.h M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm Log Message: --- Add a hasUnreadBadgeText property to _WKWebExtensionAction. https://webkit.org/b/268014 rdar://problem/121536115 Reviewed by Brian Weinstein. This property is automatically set to `YES` when `badgeText` changes and is not empty. If `badgeText` becomes empty or the popup associated with the action is presented, this property is automatically set to `NO`. Additionally, it should be set to `NO` by the app when the badge has been presented to the user. This property is useful for higher-level notification badges when extensions might be hidden behind an action sheet. * Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.h: * Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionAction.mm: (-[_WKWebExtensionAction hasUnreadBadgeText]): Added. (-[_WKWebExtensionAction setHasUnreadBadgeText:]): Added. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionActionCocoa.mm: (WebKit::WebExtensionAction::readyToPresentPopup): (WebKit::WebExtensionAction::setBadgeText): (WebKit::WebExtensionAction::hasUnreadBadgeText const): Added. (WebKit::WebExtensionAction::setHasUnreadBadgeText): Added. (WebKit::WebExtensionAction::incrementBlockedResourceCount): * Source/WebKit/UIProcess/Extensions/WebExtensionAction.h: * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIAction.mm: (TestWebKitAPI::TEST): Added new tests. Canonical link: https://commits.webkit.org/273458@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e819c4: All extensions are being granted the tabs permissi...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e819c4ec9e878eacac535573df5a24e18e821236 https://github.com/WebKit/WebKit/commit/e819c4ec9e878eacac535573df5a24e18e821236 Author: Timothy Hatcher Date: 2024-01-24 (Wed, 24 Jan 2024) Changed paths: M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm Log Message: --- All extensions are being granted the tabs permission on user gesture. https://webkit.org/b/267952 rdar://problem/121469546 Reviewed by Brian Weinstein. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm: (WebKit::WebExtensionContext::permissionState): Add missing activeTab permission check. * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm: (TestWebKitAPI::TEST): Added new test. Canonical link: https://commits.webkit.org/273444@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 69c8dc: WebKit Extensions URL schemes should be marked as ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 69c8dc02b3d9d89e0453394df1e9ecd49400281a https://github.com/WebKit/WebKit/commit/69c8dc02b3d9d89e0453394df1e9ecd49400281a Author: Timothy Hatcher Date: 2024-01-19 (Fri, 19 Jan 2024) Changed paths: M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm M Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIExtension.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPILocalization.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm Log Message: --- WebKit Extensions URL schemes should be marked as secure, etc. https://webkit.org/b/267740 rdar://problem/121222556 Reviewed by Brian Weinstein. * Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm: (-[_WKWebExtensionContext setBaseURL:]): Assert the URL scheme is registered. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm: (WebKit::WebExtensionController::addProcessPool): Mark the extensionSchemes as secure, bypassing CSP, and domain relaxation is forbidden. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm: (WebKit::WebExtensionMatchPattern::extensionSchemes): Added. (WebKit::WebExtensionMatchPattern::registerCustomURLScheme): Add to extensionSchemes. * Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h: Canonical link: https://commits.webkit.org/273222@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] f171b7: Attempt to fix tvOS build.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f171b7b70a5943f24e0db5e9dac2ab20510a39d0 https://github.com/WebKit/WebKit/commit/f171b7b70a5943f24e0db5e9dac2ab20510a39d0 Author: Timothy Hatcher Date: 2024-01-18 (Thu, 18 Jan 2024) Changed paths: M Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.h M Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.mm Log Message: --- Attempt to fix tvOS build. Unreviewed build fix. * Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.h: * Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.mm: Canonical link: https://commits.webkit.org/273201@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 2ffa7c: Add support for Web Extension cookies API.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 2ffa7c91980ec5d1b448b38896c59dac4b77819c https://github.com/WebKit/WebKit/commit/2ffa7c91980ec5d1b448b38896c59dac4b77819c Author: Timothy Hatcher Date: 2024-01-17 (Wed, 17 Jan 2024) Changed paths: M Source/WebKit/DerivedSources-input.xcfilelist M Source/WebKit/DerivedSources.make M Source/WebKit/Scripts/webkit/messages.py A Source/WebKit/Shared/Extensions/WebExtensionCookieParameters.h A Source/WebKit/Shared/Extensions/WebExtensionCookieParameters.serialization.in M Source/WebKit/Shared/Extensions/WebExtensionUtilities.mm M Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp M Source/WebKit/UIProcess/API/APIHTTPCookieStore.h M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.h M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.mm A Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerConfigurationCocoa.mm M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in M Source/WebKit/UIProcess/Extensions/WebExtensionController.h M Source/WebKit/UIProcess/Extensions/WebExtensionControllerConfiguration.cpp M Source/WebKit/UIProcess/Extensions/WebExtensionControllerConfiguration.h M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h M Source/WebKit/WebKit.xcodeproj/project.pbxproj M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPICookiesCocoa.mm M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPICookies.h M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPICookies.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionControllerConfiguration.mm Log Message: --- Add support for Web Extension cookies API. https://webkit.org/b/261771 rdar://problem/115743156 Reviewed by Brian Weinstein. Finish up the support for cookies, which includes support for multiple cookies stores. This required new _WKWebExtensionControllerConfiguration property to define what the default WKWebsiteDataStore is, and the other stores are tracked by what tabs are open. Added a bunch of new tests that cover all the cookies APIs. * Source/WebKit/DerivedSources-input.xcfilelist: * Source/WebKit/DerivedSources.make: * Source/WebKit/Scripts/webkit/messages.py: (class_template_headers): (headers_for_type): * Source/WebKit/Shared/Extensions/WebExtensionCookieParameters.h: Added. * Source/WebKit/Shared/Extensions/WebExtensionCookieParameters.serialization.in: Added. * Source/WebKit/Shared/Extensions/WebExtensionUtilities.mm: (WebKit::validateSingleObject): (WebKit::validateDictionary): * Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp: (API::HTTPCookieStore::cookies): * Source/WebKit/UIProcess/API/APIHTTPCookieStore.h: * Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.h: * Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.mm: (-[_WKWebExtensionControllerConfiguration encodeWithCoder:]): (-[_WKWebExtensionControllerConfiguration initWithCoder:]): (-[_WKWebExtensionControllerConfiguration defaultWebsiteDataStore]): (-[_WKWebExtensionControllerConfiguration setDefaultWebsiteDataStore:]): * Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm: Added. (WebKit::domainsMatch): (WebKit::toURL): (WebKit::WebExtensionContext::fetchCookies): (WebKit::WebExtensionContext::cookiesGet): (WebKit::WebExtensionContext::cookiesGetAll): (WebKit::WebExtensionContext::cookiesSet): (WebKit::WebExtensionContext::cookiesRemove): (WebKit::WebExtensionContext::cookiesGetAllCookieStores): (WebKit::WebExtensionContext::fireCookiesChangedEventIfNeeded): * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm: (WebKit::WebExtensionContext::websiteDataStore const): (WebKit::WebExtensionContext::cookiesDidChange): * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm: (WebKit::WebExtensionController::addPage): (WebKit::WebExtensionController::removePage): (WebKit::WebExtensionController::websiteDataStore const): (WebKit::WebExtensionController::addWebsiteDataStore): (WebKit::WebExtensionController::removeWebsiteDataStore): (WebKit::WebExtensionController::cookiesDidChange): * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerConfigurationCocoa.mm: (WebKit::WebExtensionControllerConfiguration::copy const): * Source/WebKit/UIProcess/Extensions/WebExtensionContext.h: * Source/WebKit/UIProcess/Extensions
[webkit-changes] [WebKit/WebKit] 5327fc: Add some tests for tabs.onUpdated event with priva...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 5327fc4dd8852577ac7baf1e134b25e94a180347 https://github.com/WebKit/WebKit/commit/5327fc4dd8852577ac7baf1e134b25e94a180347 Author: Timothy Hatcher Date: 2024-01-17 (Wed, 17 Jan 2024) Changed paths: M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm Log Message: --- Add some tests for tabs.onUpdated event with private tabs. https://webkit.org/b/267506 rdar://problem/120961040 Reviewed by Brian Weinstein. Add tests to verify that tabs.onUpdated does not fire for tabs that extensions does not have access to see. * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm: (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/273132@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 814028: Crash returning non-string results in scripting.ex...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 814028b389f8a6d2150fb632bda456dc6552f51f https://github.com/WebKit/WebKit/commit/814028b389f8a6d2150fb632bda456dc6552f51f Author: Timothy Hatcher Date: 2024-01-10 (Wed, 10 Jan 2024) Changed paths: M Source/WebKit/Shared/Extensions/WebExtensionDynamicScripts.serialization.in M Source/WebKit/Shared/Extensions/WebExtensionScriptInjectionResultParameters.h M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIScriptingCocoa.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm Log Message: --- Crash returning non-string results in scripting.executeScript and tabs.executeScript. https://webkit.org/b/267376 rdar://119334188 Reviewed by Brian Weinstein. Treat the result of scripting.executeScript and tabs.executeScript as a JSON-serializable value and encode and parse it as needed. Added new tests that confirms this works. * Source/WebKit/Shared/Extensions/WebExtensionDynamicScripts.serialization.in: * Source/WebKit/Shared/Extensions/WebExtensionScriptInjectionResultParameters.h: * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm: (WebKit::WebExtensionDynamicScripts::toInjectionResultParameters): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIScriptingCocoa.mm: (WebKit::toWebAPI): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIScripting.mm: (TestWebKitAPI::TEST): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm: (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/272879@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] fff2fd: browser.commands missing when action command has n...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: fff2fd0be2e4544d9141f1f6ea058c932e49c823 https://github.com/WebKit/WebKit/commit/fff2fd0be2e4544d9141f1f6ea058c932e49c823 Author: Timothy Hatcher Date: 2024-01-03 (Wed, 03 Jan 2024) Changed paths: M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPICommands.mm Log Message: --- browser.commands missing when action command has no description (breaks 1Password) https://webkit.org/b/267058 rdar://120391725 Reviewed by Brian Weinstein. The description is optional for action commands in the manifest. We currently log an error and return no commands, so the commands API is omitted. This change makes the action commands fallback to the action label if the description key is missing. An error is still logged for standard commands that are missing a description. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm: (WebKit::WebExtension::populateCommandsIfNeeded): Adjusted logic to only require description for standard commands and not action commands. * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPICommands.mm: (TestWebKitAPI::TEST): Adjusted current test manifest and GetAll test to check fallback. Canonical link: https://commits.webkit.org/272627@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 52b154: TestWebKitAPI.WKWebExtensionAPITabs.ActiveTab is f...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 52b154a911f1b2450d8d73569b70599a6b6e9974 https://github.com/WebKit/WebKit/commit/52b154a911f1b2450d8d73569b70599a6b6e9974 Author: Timothy Hatcher Date: 2023-12-18 (Mon, 18 Dec 2023) Changed paths: M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm Log Message: --- TestWebKitAPI.WKWebExtensionAPITabs.ActiveTab is flaky. https://webkit.org/b/266594 rdar://119346255 Reviewed by Brian Weinstein. The URL does not change for tabs during the provisional load, and saying it was changing was causing the onChanged event to fire too soon for this test to be accurate. Also tweak how we check for properties in the changeInfo object to be consistent. * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm: (TestWebKitAPI::TEST): * Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm: (-[TestWebExtensionTab webView:didStartProvisionalNavigation:]): (-[TestWebExtensionTab webView:didReceiveServerRedirectForProvisionalNavigation:]): (-[TestWebExtensionTab webView:didFailNavigation:withError:]): Canonical link: https://commits.webkit.org/272240@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] dcd6c4: WKWebExtensionAPITabs.RemovedEvent is flaky (somet...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: dcd6c460a0327bcd8a2efef461ba9280bb7a7090 https://github.com/WebKit/WebKit/commit/dcd6c460a0327bcd8a2efef461ba9280bb7a7090 Author: Timothy Hatcher Date: 2023-12-18 (Mon, 18 Dec 2023) Changed paths: M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm Log Message: --- WKWebExtensionAPITabs.RemovedEvent is flaky (sometimes wrong tab ID). https://webkit.org/b/261848 rdar://problem/115809590 Unreviewed test gardening. Enable the WKWebExtensionAPITabs.RemovedEvent test, since it no longer fails after hundreds of iterations. * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm: (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/272237@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] fdd1ff: REGRESSION (271259@main?): [ iOS Sonoma Debug arm6...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: fdd1ff775c0c2b996e545ddf82b564f31c575227 https://github.com/WebKit/WebKit/commit/fdd1ff775c0c2b996e545ddf82b564f31c575227 Author: Timothy Hatcher Date: 2023-12-18 (Mon, 18 Dec 2023) Changed paths: M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm Log Message: --- REGRESSION (271259@main?): [ iOS Sonoma Debug arm64 ] TestWebKitAPI.WKWebExtensionAPITabs.SendMessageWithPromiseReply timeout https://webkit.org/b/266518 rdar://problem/119740501 Reviewed by Brian Weinstein. Adopt EagerCallbackAggregator for the reply handler. This was added on the UIProcess side for the message sending in 271636@main. It can also be used here, with the help of an ObjC wrapper object that can keep the aggregator in scope for the required blocks. We can't use BlockPtr for these since the JSValue ObjC translation requires blocks to have a signature to translate them into JavaScript functions, which is only for compiled blocks. Without this, the aggregator falls out of scope and is released. Added additional tests to make sure async replies work in addition to sync replies. Also adopted optional chaining for some tests since an exception is thrown when response is null. * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm: (-[_WKReplyCallbackAggregator initWithAggregator:]): Added. (-[_WKReplyCallbackAggregator aggregator]): Added. (WebKit::WebExtensionContextProxy::internalDispatchRuntimeMessageEvent): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm: (TestWebKitAPI::TEST): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm: (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/272236@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 6dd1c2: Add interface and parsing support Web Extensions c...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 6dd1c2e5a21a6cbbdd49e34dd3cc60d174078270 https://github.com/WebKit/WebKit/commit/6dd1c2e5a21a6cbbdd49e34dd3cc60d174078270 Author: Timothy Hatcher Date: 2023-12-15 (Fri, 15 Dec 2023) Changed paths: M Source/WebKit/DerivedSources-input.xcfilelist M Source/WebKit/DerivedSources-output.xcfilelist M Source/WebKit/DerivedSources.make M Source/WebKit/WebKit.xcodeproj/project.pbxproj A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPICookiesCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPICookies.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPICookies.idl M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl M Tools/TestWebKitAPI/SourcesCocoa.txt M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj A Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPICookies.mm Log Message: --- Add interface and parsing support Web Extensions cookies API. https://webkit.org/b/261771 rdar://problem/115743156 Reviewed by Brian Weinstein. * Source/WebKit/DerivedSources-input.xcfilelist: * Source/WebKit/DerivedSources-output.xcfilelist: * Source/WebKit/DerivedSources.make: * Source/WebKit/WebKit.xcodeproj/project.pbxproj: * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPICookiesCocoa.mm: Added. (WebKit::WebExtensionAPICookies::get): (WebKit::WebExtensionAPICookies::getAll): (WebKit::WebExtensionAPICookies::set): (WebKit::WebExtensionAPICookies::remove): (WebKit::WebExtensionAPICookies::getAllCookieStores): (WebKit::WebExtensionAPICookies::onChanged): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm: (WebKit::WebExtensionAPINamespace::cookies): * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPICookies.h: Added. * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h: * Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPICookies.idl: Added. * Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl: * Tools/TestWebKitAPI/SourcesCocoa.txt: * Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPICookies.mm: Added. (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/272157@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes