Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3bd3d318889c814347c566a45b349c96f078720b
      
https://github.com/WebKit/WebKit/commit/3bd3d318889c814347c566a45b349c96f078720b
  Author: Timothy Hatcher <[email protected]>
  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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to