Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a0d65e89085b46a9aabbb405df0181fc5c1e3ce6
      
https://github.com/WebKit/WebKit/commit/a0d65e89085b46a9aabbb405df0181fc5c1e3ce6
  Author: Timothy Hatcher <timo...@apple.com>
  Date:   2024-03-15 (Fri, 15 Mar 2024)

  Changed paths:
    M Source/WebKit/Modules/OSX_Private.modulemap
    M Source/WebKit/Modules/iOS_Private.modulemap
    M Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h
    M 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermission.mm
    A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermissionPrivate.h
    M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
    M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDeclarativeNetRequestCocoa.mm
    M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm
    M 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
    M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPINamespace.mm

  Log Message:
  -----------
  Permissions check in WebExtensionAPINamespace::isPropertyAllowed should be 
better.
https://webkit.org/b/259914
rdar://problem/113537360

Reviewed by Brian Weinstein.

Send the granted permissions map to the web processes, so the checks in 
isPropertyAllowed() are
accurate if the permissions have not been granted by the app.

* Source/WebKit/Modules/OSX_Private.modulemap: Added 
_WKWebExtensionPermissionPrivate.h.
* Source/WebKit/Modules/iOS_Private.modulemap: Ditto.
* Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h: Added 
grantedPermissions.
* 
Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in: 
Ditto.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermission.mm: Import 
_WKWebExtensionPermissionPrivate.h.
Added notifications permission, since it is needed to prevent it from being 
filtered out as an unsupported permission.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionPermissionPrivate.h: Added.
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm:
(WebKit::WebExtensionContext::declarativeNetRequestGetMatchedRules): Use new 
extensionHasTemporaryPermission() helper.
The old check would have been true if the 'tabs' permission was granted for the 
whole extension too.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::supportedPermissions): Added notifications.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::permissionsDidChange): Send 
UpdateGrantedPermissions message to all processes.
(WebKit::WebExtensionContext::permissionState): Use new 
extensionHasTemporaryPermission() helper.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::extensionHasTemporaryPermission const): Added.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::parameters const): Set grantedPermissions.
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
(WebKit::WebExtensionTab::hasActiveUserGesture const): Made const.
(WebKit::WebExtensionTab::temporaryPermissionMatchPattern const): Ditto.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj: Added 
_WKWebExtensionPermissionPrivate.h.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDeclarativeNetRequestCocoa.mm:
(WebKit::WebExtensionAPIDeclarativeNetRequest::getMatchedRules): Use 
hasPermission(), and toErrorString().
(WebKit::extensionHasPermission): Deleted.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:
(WebKit::WebExtensionAPINamespace::isPropertyAllowed): Use hasPermission().
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionAPIRuntime::isPropertyAllowed): Use hasPermission().
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm:
(WebKit::WebExtensionContextProxy::getOrCreate): Set m_grantedPermissions.
(WebKit::WebExtensionContextProxy::hasPermission const): Added.
(WebKit::WebExtensionContextProxy::updateGrantedPermissions): Added.
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPINamespace.mm:
(TEST(WKWebExtensionAPINamespace, NoWebNavigationObjectWithoutPermission)): 
Deny permission since it is auto granted now.
(TEST(WKWebExtensionAPINamespace, WebNavigationObjectWithPermission)): Added a 
comment.
(TEST(WKWebExtensionAPINamespace, NoNotificationsObjectWithoutPermission)): 
Deny permission since it is auto granted now.
(TEST(WKWebExtensionAPINamespace, NotificationsObjectWithPermission)): Added a 
comment.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to