[webkit-changes] [WebKit/WebKit] 290f26: Add support for the Web Extensions Permissions API.
kiaraarose
noreply at github.com
Fri Jan 6 11:34:54 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 290f26cb9bdcb5fe32a70d108af0eb6d4702720f
https://github.com/WebKit/WebKit/commit/290f26cb9bdcb5fe32a70d108af0eb6d4702720f
Author: Kiara Rose <kiara_rose at apple.com>
Date: 2023-01-06 (Fri, 06 Jan 2023)
Changed paths:
M Source/WTF/wtf/HashSet.h
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
A Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.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/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm
A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPermissionsCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h
A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPermissions.h
M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl
M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIPermissions.idl
Log Message:
-----------
Add support for the Web Extensions Permissions API.
https://bugs.webkit.org/show_bug.cgi?id=248555
Reviewed by Timothy Hatcher.
This patch adds the implementation for the Permissions APIs defined in the WebExtensionAPIPermissions idl file.
This includes consulting the WebExtensionContext for information on the current permissions the
extension has access to, and reporting that information back to WebProcess.
* Source/WTF/wtf/HashSet.h:
(WTF::W>::isSubset):
Checks if the current set is a subset of a given set.
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm: Added.
(WebKit::WebExtensionContext::getAll):
Get all the current granted permissions and match patterns for the extension.
(WebKit::WebExtensionContext::contains):
Checks that the current permissions/matches match the given permissions and match patterns.
(WebKit::WebExtensionContext::permissionsRequest):
https://webkit.org/b/250135 is being used to track adding support for permissions.request().
(WebKit::WebExtensionContext::permissionsRemove):
Removes access for specified permissions and origins.
(WebKit::WebExtensionContext::parseMatchPatterns):
Parsing the input HashSet of origins and populates a MatchPatternSet.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::hasPermissions):
Checks if the extension has access to a set of permissions and match patterns.
(WebKit::WebExtensionContext::scheduleBackgroundContentToUnload):
Removed code that caused an infinite loop. Implementation being tracked in https://webkit.org/b/246483.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:
(WebKit::WebExtensionAPINamespace::isPropertyAllowed):
(WebKit::WebExtensionAPINamespace::permissions):
Add support for the permissions API.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPermissionsCocoa.mm: Added.
(WebKit::WebExtensionAPIPermissions::getAll):
(WebKit::WebExtensionAPIPermissions::contains):
(WebKit::WebExtensionAPIPermissions::request):
(WebKit::WebExtensionAPIPermissions::remove):
(WebKit::WebExtensionAPIPermissions::parseDetailsDictionary):
Populates a set of permissions and origins to pass to the UIProcess.
(WebKit::WebExtensionAPIPermissions::verifyRequestedPermissions):
Checks that the permissions being requested/removed are valid.
(WebKit::WebExtensionAPIPermissions::validatePermissionsDetails):
Validates the data passed in. Check that the permissions requested are supported.
(WebKit::WebExtensionAPIPermissions::onAdded):
(WebKit::WebExtensionAPIPermissions::onRemoved):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPermissions.h:
Copied from Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl:
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIPermissions.idl:
Canonical link: https://commits.webkit.org/258552@main
More information about the webkit-changes
mailing list