Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Add support to the Permissions API for dedicated workers
https://bugs.webkit.org/show_bug.cgi?id=243805 Reviewed by Chris Dumez and Sihui Liu. Permissions::query() should be exposed for both window and workers. Currently, it is only exposed for window. This patch is the first step in exposing it for all of the workers. * LayoutTests/http/tests/notifications/permission/worker-permission-query-expected.txt: Added. * LayoutTests/http/tests/notifications/permission/worker-permission-query.html: Added. * LayoutTests/http/tests/notifications/permission/worker-permission-query.js: Added. (onmessage): * LayoutTests/imported/w3c/web-platform-tests/permissions/all-permissions-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/permissions/idlharness.any.worker-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/storage/permission-query.https.any.worker-expected.txt: * Source/WebCore/CMakeLists.txt: * Source/WebCore/DerivedSources-input.xcfilelist: * Source/WebCore/DerivedSources-output.xcfilelist: * Source/WebCore/DerivedSources.make: * Source/WebCore/Headers.cmake: * Source/WebCore/Modules/permissions/NavigatorPermissions.cpp: (WebCore::NavigatorPermissions::permissions): * Source/WebCore/Modules/permissions/NavigatorPermissions.h: * Source/WebCore/Modules/permissions/PermissionController.h: * Source/WebCore/Modules/permissions/PermissionStatus.cpp: (WebCore::PermissionStatus::PermissionStatus): (WebCore::PermissionStatus::~PermissionStatus): (WebCore::PermissionStatus::stateChanged): * Source/WebCore/Modules/permissions/PermissionStatus.h: * Source/WebCore/Modules/permissions/PermissionStatus.idl: * Source/WebCore/Modules/permissions/PermissionStatusIdentifier.h: Added. * Source/WebCore/Modules/permissions/Permissions.cpp: (WebCore::Permissions::create): (WebCore::Permissions::Permissions): (WebCore::Permissions::navigator): (WebCore::Permissions::query): * Source/WebCore/Modules/permissions/Permissions.h: * Source/WebCore/Modules/permissions/Permissions.idl: * Source/WebCore/Modules/permissions/WorkerNavigator+Permissions.idl: Copied from Source/WebCore/Modules/permissions/Permissions.idl. * Source/WebCore/Modules/permissions/WorkerNavigatorPermissions.cpp: Copied from Source/WebCore/Modules/permissions/NavigatorPermissions.cpp. (WebCore::WorkerNavigatorPermissions::WorkerNavigatorPermissions): (WebCore::WorkerNavigatorPermissions::permissions): (WebCore::WorkerNavigatorPermissions::from): (WebCore::WorkerNavigatorPermissions::supplementName): * Source/WebCore/Modules/permissions/WorkerNavigatorPermissions.h: Copied from Source/WebCore/Modules/permissions/NavigatorPermissions.h. * Source/WebCore/Sources.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp: (WebKit::WebPermissionController::addObserver): (WebKit::WebPermissionController::removeObserver): (WebKit::WebPermissionController::permissionChanged): * Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h: Canonical link: https://commits.webkit.org/253447@main
- Loading branch information
1 parent
d95feca
commit fd42e2c17767290e383a082d15593c4b74f79717
Showing
24 changed files
with
378 additions
and
98 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
This test checks that Permissions::query() works for dedicated workers | ||
|
||
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". | ||
|
||
|
||
PASS message.data is "prompt" | ||
PASS receivedPostMessageResponse became true | ||
PASS requestPermissionResult is "granted" | ||
PASS message.data is "granted" | ||
PASS receivedPostMessageResponse became true | ||
PASS requestPermissionResult is "denied" | ||
PASS message.data is "denied" | ||
PASS receivedPostMessageResponse became true | ||
PASS successfullyParsed is true | ||
|
||
TEST COMPLETE | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<script src="/resources/js-test-pre.js"></script> | ||
<script src="/resources/notifications-test-pre.js"></script> | ||
</head> | ||
<body> | ||
<script> | ||
|
||
description("This test checks that Permissions::query() works for dedicated workers") | ||
|
||
jsTestIsAsync = true; | ||
|
||
var expectedData = null; | ||
var receivedPostMessageResponse = true; | ||
|
||
var worker = new Worker('worker-permission-query.js'); | ||
worker.onmessage = function(message) { | ||
window.message = message; | ||
shouldBeEqualToString("message.data", expectedData); | ||
receivedPostMessageResponse = true; | ||
} | ||
|
||
async function defaultTest() | ||
{ | ||
receivedPostMessageResponse = false; | ||
expectedData = "prompt"; | ||
worker.postMessage(1); | ||
await shouldBecomeEqual("receivedPostMessageResponse", "true"); | ||
} | ||
|
||
async function grantTest() | ||
{ | ||
receivedPostMessageResponse = false; | ||
expectedData = "granted"; | ||
internals.withUserGesture(() => { | ||
// Permission is granted by default when requestPermission() is called. | ||
window.Notification.requestPermission().then((result)=> { | ||
requestPermissionResult = result; | ||
shouldBeEqualToString("requestPermissionResult", "granted"); | ||
worker.postMessage(2); | ||
}); | ||
}); | ||
await shouldBecomeEqual("receivedPostMessageResponse", "true"); | ||
} | ||
|
||
async function denyTest() | ||
{ | ||
receivedPostMessageResponse = false; | ||
expectedData = "denied"; | ||
internals.withUserGesture(() => { | ||
testRunner.denyWebNotificationPermissionOnPrompt(testURL); | ||
window.Notification.requestPermission().then((result)=> { | ||
requestPermissionResult = result; | ||
shouldBeEqualToString("requestPermissionResult", "denied"); | ||
worker.postMessage(3); | ||
}); | ||
}); | ||
await shouldBecomeEqual("receivedPostMessageResponse", "true"); | ||
} | ||
|
||
(async function () { | ||
await defaultTest(); | ||
await grantTest(); | ||
await denyTest(); | ||
finishJSTest(); | ||
})(); | ||
|
||
</script> | ||
<script src="/resources/js-test-post.js"></script> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
onmessage = function(e) { | ||
navigator.permissions.query({ name: "notifications" }).then((status) => { | ||
postMessage(status.state); | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
|
||
FAIL The "persistent-storage" permission is recognized promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.permissions.query')" | ||
FAIL The "persistent-storage" permission is recognized promise_test: Unhandled rejection with value: object "TypeError: Type error" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.