[webkit-changes] [WebKit/WebKit] 3bd3d3: Add _WKWebExtensionControllerConfiguration to cont...

Timothy Hatcher noreply at github.com
Fri Dec 2 15:37:24 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3bd3d318889c814347c566a45b349c96f078720b
      https://github.com/WebKit/WebKit/commit/3bd3d318889c814347c566a45b349c96f078720b
  Author: Timothy Hatcher <timothy at apple.com>
  Date:   2022-12-02 (Fri, 02 Dec 2022)

  Changed paths:
    M Source/WebKit/Platform/Logging.h
    M Source/WebKit/Platform/cocoa/CocoaHelpers.h
    M Source/WebKit/Platform/cocoa/CocoaHelpers.mm
    M Source/WebKit/Shared/API/APIObject.h
    M Source/WebKit/Shared/Cocoa/APIObject.mm
    M Source/WebKit/Sources.txt
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.mm
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.mm
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfigurationInternal.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfigurationPrivate.h
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm
    A Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerConfiguration.mm
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp
    M Source/WebKit/UIProcess/Extensions/WebExtensionController.h
    A Source/WebKit/UIProcess/Extensions/WebExtensionControllerConfiguration.cpp
    A Source/WebKit/UIProcess/Extensions/WebExtensionControllerConfiguration.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Tools/TestWebKitAPI/SourcesCocoa.txt
    M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm
    A Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionControllerConfiguration.mm
    M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h
    M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  -----------
  Add _WKWebExtensionControllerConfiguration to control extension storage.
https://bugs.webkit.org/show_bug.cgi?id=248665

Reviewed by Brian Weinstein.

_WKWebExtensionControllerConfiguration allows for default persistent storage, non-persistent,
and identifier based storage. With this, we can now store state for extension contexts and have
a directory structure to store extension data in the future (like local storage, etc).

Default storage is placed at: ~/Library/WebKit/<app-id>/WebExtensions/Default/<extension-id>
Non-persistent storage is placed at: ~/Library/WebKit/<app-id>/WebExtensions/<identifier>/<extension-id>
Non-persistent storage is not saved to disk.

Only extension contexts that have a custom uniqueIdentifier will be persistent as well, since the default
uniqueIdentifier is a random UUID, persisting those would cause state to be saved under random IDs that
can't be reused later.

* Source/WebKit/Platform/Logging.h:
* Source/WebKit/Platform/cocoa/CocoaHelpers.h: Removed UUID helpers since UUID has Cocoa conversions now.
* Source/WebKit/Platform/cocoa/CocoaHelpers.mm: Ditto.
* Source/WebKit/Shared/API/APIObject.h:
* Source/WebKit/Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* Source/WebKit/Sources.txt:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]): Adjust access to _webExtensionController now that it is RetainPtr.
(-[WKWebViewConfiguration _strongWebExtensionController]): Ditto.
(-[WKWebViewConfiguration _webExtensionController]): Don't use a LazyInitialized since we don't require a
webExtensionController to be set and we don't want to assume the default configuration.
(-[WKWebViewConfiguration _setWebExtensionController:]): Use nil instead of nullptr.
(-[WKWebViewConfiguration _weakWebExtensionController]): Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionController.mm:
(-[_WKWebExtensionController init]): Use default configuration.
(-[_WKWebExtensionController initWithConfiguration:]): Added.
(-[_WKWebExtensionController configuration]): Added.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.h: Added.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfiguration.mm: Added.
(+[_WKWebExtensionControllerConfiguration supportsSecureCoding]):
(+[_WKWebExtensionControllerConfiguration defaultConfiguration]):
(+[_WKWebExtensionControllerConfiguration nonPersistentConfiguration]):
(+[_WKWebExtensionControllerConfiguration configurationWithIdentifier:]):
(-[_WKWebExtensionControllerConfiguration encodeWithCoder:]):
(-[_WKWebExtensionControllerConfiguration initWithCoder:]):
(-[_WKWebExtensionControllerConfiguration copyWithZone:]):
(-[_WKWebExtensionControllerConfiguration dealloc]):
(-[_WKWebExtensionControllerConfiguration isEqual:]):
(-[_WKWebExtensionControllerConfiguration debugDescription]):
(-[_WKWebExtensionControllerConfiguration identifier]):
(-[_WKWebExtensionControllerConfiguration isPersistent]):
(-[_WKWebExtensionControllerConfiguration _apiObject]):
(-[_WKWebExtensionControllerConfiguration _webExtensionControllerConfiguration]):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfigurationInternal.h: Added.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerConfigurationPrivate.h: Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::WebExtensionContext):
(WebKit::WebExtensionContext::load): Added a storageDirectory param. Call readStateFromStorage().
(WebKit::WebExtensionContext::unload): Call writeStateToStorage().
(WebKit::WebExtensionContext::stateFilePath const): Added.
(WebKit::WebExtensionContext::currentState const): Added.
(WebKit::WebExtensionContext::readStateFromStorage): Added.
(WebKit::WebExtensionContext::writeStateToStorage const): Added.
(WebKit::WebExtensionContext::setBaseURL): Use makeString() instead of StringBuilder.
(WebKit::WebExtensionContext::setUniqueIdentifier): Don't use baseURL's host, use a UUID for empty.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::storageDirectory const): Added.
(WebKit::WebExtensionController::load): Pass a storageDirectory to the loaded context.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerConfiguration.mm: Added.
(WebKit::WebExtensionControllerConfiguration::createStorageDirectoryPath):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::isPersistent const): Added.
(WebKit::WebExtensionContext::hasCustomUniqueIdentifier const): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp:
(WebKit::WebExtensionController::WebExtensionController):
* Source/WebKit/UIProcess/Extensions/WebExtensionController.h:
(WebKit::WebExtensionController::create):
(WebKit::WebExtensionController::configuration const):
(WebKit::WebExtensionController::isPersistent const):
(WebKit::WebExtensionController::hasLoadedContexts const):
* Source/WebKit/UIProcess/Extensions/WebExtensionControllerConfiguration.cpp: Added.
(WebKit::WebExtensionControllerConfiguration::WebExtensionControllerConfiguration):
(WebKit::WebExtensionControllerConfiguration::copy const):
(WebKit::WebExtensionControllerConfiguration::operator== const):
* Source/WebKit/UIProcess/Extensions/WebExtensionControllerConfiguration.h: Added.
(WebKit::WebExtensionControllerConfiguration::createDefault):
(WebKit::WebExtensionControllerConfiguration::createNonPersistent):
(WebKit::WebExtensionControllerConfiguration::create):
(WebKit::WebExtensionControllerConfiguration::identifier const):
(WebKit::WebExtensionControllerConfiguration::isPersistent const):
(WebKit::WebExtensionControllerConfiguration::storageDirectory const):
(WebKit::WebExtensionControllerConfiguration::operator!= const):
(WebKit::WebExtensionControllerConfiguration::wrapper const):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionController.mm:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionControllerConfiguration.mm: Added.
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h:
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionManager initWithExtension:]):

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




More information about the webkit-changes mailing list