[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