[webkit-changes] [WebKit/WebKit] 37568d: Support loading Web Extension URLs and load the ba...

Timothy Hatcher noreply at github.com
Thu Oct 13 16:52:39 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 37568d474f72b610d2dd7c356a6709388ff669c1
      https://github.com/WebKit/WebKit/commit/37568d474f72b610d2dd7c356a6709388ff669c1
  Author: Timothy Hatcher <timothy at apple.com>
  Date:   2022-10-13 (Thu, 13 Oct 2022)

  Changed paths:
    M Source/WebCore/en.lproj/Localizable.strings
    M Source/WebKit/Shared/WebPageCreationParameters.cpp
    M Source/WebKit/Shared/WebPageCreationParameters.h
    M Source/WebKit/UIProcess/API/APIPageConfiguration.cpp
    M Source/WebKit/UIProcess/API/APIPageConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.mm
    M Source/WebKit/UIProcess/Cocoa/WebURLSchemeHandlerCocoa.h
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm
    A Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionURLSchemeHandlerCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtension.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionController.h
    A Source/WebKit/UIProcess/Extensions/WebExtensionURLSchemeHandler.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebURLSchemeHandler.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm

  Log Message:
  -----------
  Support loading Web Extension URLs and load the background page or service worker.
https://bugs.webkit.org/show_bug.cgi?id=246409

Reviewed by Brian Weinstein.

This also adds _WKWebExtensionController to WKWebViewConfiguration and propagate through to WebPage.

* Source/WebCore/en.lproj/Localizable.strings: Updated with update-webkit-localizable-strings.
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView urlSchemeHandlerForURLScheme:]): Deleted. Dead code, not used or exposed in any header.
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration urlSchemeHandlerForURLScheme:]): Only return API handlers.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(-[_WKWebExtensionContext setBaseURL:]): Added more assertions.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.mm:
(-[_WKWebExtensionController extensionContextForExtension:]): Added baseURL version.
* Source/WebKit/UIProcess/Cocoa/WebURLSchemeHandlerCocoa.h:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::isAccessibleResourcePath): Added with FIXME.
(WebKit::WebExtension::resourceDataForPath): Remove "/" prefix.
(WebKit::toAPI): Added.
(WebKit::WebExtension::createError): Use toAPI.
(WebKit::WebExtension::removeError): Added.
(WebKit::WebExtension::recordError): Dispatch notifications async to avoid reentrancy.
(WebKit::WebExtension::backgroundContentPath): Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(-[_WKWebExtensionContextDelegate initWithWebExtensionContext:]): Added.
(-[_WKWebExtensionContextDelegate webView:decidePolicyForNavigationAction:decisionHandler:]): Added.
(-[_WKWebExtensionContextDelegate webView:didFinishNavigation:]): Added.
(-[_WKWebExtensionContextDelegate webView:didFailNavigation:withError:]): Added.
(-[_WKWebExtensionContextDelegate webViewWebContentProcessDidTerminate:]): Added.
(WebKit::WebExtensionContext::WebExtensionContext): Create m_delegate.
(WebKit::toAPI): Added.
(WebKit::WebExtensionContext::createError): Use toAPI and added BaseURLTaken case.
(WebKit::WebExtensionContext::load): Call loadBackgroundWebViewDuringLoad.
(WebKit::WebExtensionContext::unload): Call unloadBackgroundWebView.
(WebKit::WebExtensionContext::setBaseURL): Canonicalize URL scheme.
(WebKit::WebExtensionContext::postAsyncNotification): Use makeBlockPtr to be safe in C++.
(WebKit::WebExtensionContext::webViewConfiguration): Added.
(WebKit::WebExtensionContext::backgroundContentURL): Added.
(WebKit::WebExtensionContext::loadBackgroundWebViewDuringLoad): Added.
(WebKit::WebExtensionContext::loadBackgroundWebView): Added.
(WebKit::WebExtensionContext::unloadBackgroundWebView): Added.
(WebKit::WebExtensionContext::performTasksAfterBackgroundContentLoads): Added.
(WebKit::WebExtensionContext::decidePolicyForNavigationAction): Added.
(WebKit::WebExtensionContext::didFinishNavigation): Added.
(WebKit::WebExtensionContext::didFailNavigation): Added.
(WebKit::WebExtensionContext::webViewWebContentProcessDidTerminate):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::load): Added scheme handling more more error reporting.
(WebKit::WebExtensionController::unload): Update the baseURL map.
(WebKit::WebExtensionController::addPage): Added. Register the scheme handlers.
(WebKit::WebExtensionController::removePage): Added.
(WebKit::WebExtensionController::extensionContext const):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionURLSchemeHandlerCocoa.mm: Added.
(WebKit::WebExtensionURLSchemeHandler::WebExtensionURLSchemeHandler):
(WebKit::WebExtensionURLSchemeHandler::platformStartTask):
(WebKit::WebExtensionURLSchemeHandler::platformStopTask):
* Source/WebKit/UIProcess/Extensions/WebExtension.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionController.h:
(WebKit::WebExtensionController::wrapper const):
* Source/WebKit/UIProcess/Extensions/WebExtensionURLSchemeHandler.h: Added.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy): Call addPage on the WebExtensionController.
(WebKit::WebPageProxy::close): Call removePage on the WebExtensionController.
* Source/WebKit/UIProcess/WebURLSchemeHandler.h:
(WebKit::WebURLSchemeHandler::isAPIHandler): Added.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj: Added new files.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm:
(TestWebKitAPI::TEST(WKWebExtensionController, BackgroundPageLoading)): Added.
* Source/WebKit/Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const): Encode WebExtensionControllerParameters.
(WebKit::WebPageCreationParameters::decode): Decode WebExtensionControllerParameters.
* Source/WebKit/Shared/WebPageCreationParameters.h:
* Source/WebKit/UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::copy const): Copy _webExtensionController.
(API::PageConfiguration::webExtensionController): Added.
(API::PageConfiguration::setWebExtensionController): Added.
* Source/WebKit/UIProcess/API/APIPageConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setupPageConfiguration:]): Copy _webExtensionController.
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration encodeWithCoder:]): Encode _webExtensionController.
(-[WKWebViewConfiguration initWithCoder:]): Decode _webExtensionController.
(-[WKWebViewConfiguration copyWithZone:]): Copy _webExtensionController.
(-[WKWebViewConfiguration _webExtensionController]): Added.
(-[WKWebViewConfiguration _setWebExtensionController:]): Added.
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
Added _webExtensionController property.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy): Set m_webExtensionController.
(WebKit::WebPageProxy::creationParameters): Set webExtensionControllerParameters.
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
* Source/WebKit/WebProcess/WebPage/WebPage.h:

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




More information about the webkit-changes mailing list