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