Skip to content

Commit

Permalink
Check for webNavigation permission before dispatching events
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=264542
rdar://102820594

Reviewed by Timothy Hatcher.

This PR also updates the webNavigation tests so they to continue working.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::didStartProvisionalLoadForFrame):
(WebKit::WebExtensionController::didCommitLoadForFrame):
(WebKit::WebExtensionController::didFinishLoadForFrame):
(WebKit::WebExtensionController::didFailLoadForFrame):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWebNavigation.mm:
(TestWebKitAPI::TEST):

Canonical link: https://commits.webkit.org/270503@main
  • Loading branch information
b-weinstein committed Nov 10, 2023
1 parent 8097906 commit 6b250d8
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,9 @@
auto listenerTypes = WebExtensionContext::EventListenerTypeSet { eventType };

for (auto& context : m_extensionContexts) {
if (!context->hasPermission(_WKWebExtensionPermissionWebNavigation))
continue;

if (!context->hasPermission(targetURL))
continue;

Expand All @@ -287,6 +290,9 @@
auto listenerTypes = WebExtensionContext::EventListenerTypeSet { committedEventType, contentLoadedtype };

for (auto& context : m_extensionContexts) {
if (!context->hasPermission(_WKWebExtensionPermissionWebNavigation))
continue;

if (!context->hasPermission(frameURL))
continue;

Expand Down Expand Up @@ -315,6 +321,9 @@
auto listenerTypes = WebExtensionContext::EventListenerTypeSet { eventType };

for (auto& context : m_extensionContexts) {
if (!context->hasPermission(_WKWebExtensionPermissionWebNavigation))
continue;

if (!context->hasPermission(frameURL))
continue;

Expand All @@ -334,6 +343,9 @@
auto listenerTypes = WebExtensionContext::EventListenerTypeSet { eventType };

for (auto& context : m_extensionContexts) {
if (!context->hasPermission(_WKWebExtensionPermissionWebNavigation))
continue;

if (!context->hasPermission(frameURL))
continue;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@
auto extension = adoptNS([[_WKWebExtension alloc] _initWithManifestDictionary:manifest resources:@{ @"background.js": backgroundScript }]);
auto manager = adoptNS([[TestWebExtensionManager alloc] initForExtension:extension.get()]);

// Grant the webNavigation permission.
[manager.get().context setPermissionStatus:_WKWebExtensionContextPermissionStatusGrantedExplicitly forPermission:_WKWebExtensionPermissionWebNavigation];

auto *urlRequest = server.requestWithLocalhost();
[manager.get().context setPermissionStatus:_WKWebExtensionContextPermissionStatusGrantedExplicitly forURL:urlRequest.URL];

Expand Down Expand Up @@ -119,6 +122,9 @@
auto extension = adoptNS([[_WKWebExtension alloc] _initWithManifestDictionary:manifest resources:@{ @"background.js": backgroundScript }]);
auto manager = adoptNS([[TestWebExtensionManager alloc] initForExtension:extension.get()]);

// Grant the webNavigation permission.
[manager.get().context setPermissionStatus:_WKWebExtensionContextPermissionStatusGrantedExplicitly forPermission:_WKWebExtensionPermissionWebNavigation];

auto *urlRequest = server.requestWithLocalhost();
[manager.get().context setPermissionStatus:_WKWebExtensionContextPermissionStatusGrantedExplicitly forURL:urlRequest.URL];

Expand Down Expand Up @@ -155,6 +161,9 @@
auto extension = adoptNS([[_WKWebExtension alloc] _initWithManifestDictionary:manifest resources:@{ @"background.js": backgroundScript }]);
auto manager = adoptNS([[TestWebExtensionManager alloc] initForExtension:extension.get()]);

// Grant the webNavigation permission.
[manager.get().context setPermissionStatus:_WKWebExtensionContextPermissionStatusGrantedExplicitly forPermission:_WKWebExtensionPermissionWebNavigation];

auto *urlRequest = server.requestWithLocalhost();
[manager.get().context setPermissionStatus:_WKWebExtensionContextPermissionStatusGrantedExplicitly forURL:urlRequest.URL];

Expand Down Expand Up @@ -202,6 +211,9 @@
auto extension = adoptNS([[_WKWebExtension alloc] _initWithManifestDictionary:manifest resources:@{ @"background.js": backgroundScript }]);
auto manager = adoptNS([[TestWebExtensionManager alloc] initForExtension:extension.get()]);

// Grant the webNavigation permission.
[manager.get().context setPermissionStatus:_WKWebExtensionContextPermissionStatusGrantedExplicitly forPermission:_WKWebExtensionPermissionWebNavigation];

auto *urlRequest = server.requestWithLocalhost();
[manager.get().context setPermissionStatus:_WKWebExtensionContextPermissionStatusGrantedExplicitly forURL:urlRequest.URL];

Expand Down

0 comments on commit 6b250d8

Please sign in to comment.