servo/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess.sub.https.window.js

71 lines
2.6 KiB
JavaScript

// META: script=helpers.js
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
'use strict';
// Document-level test config flags:
//
// testPrefix: Prefix each test case with an indicator so we know what context
// they are run in if they are used in multiple iframes.
const {testPrefix} = processQueryParams();
// Common tests to run in all frames.
test(() => {
assert_not_equals(document.requestStorageAccess, undefined);
}, "[" + testPrefix + "] document.requestStorageAccess() should exist on the document interface");
promise_test(t => {
return promise_rejects_dom(t, "NotAllowedError", document.requestStorageAccess(),
"document.requestStorageAccess() call without user gesture");
}, "[" + testPrefix + "] document.requestStorageAccess() should be rejected with a NotAllowedError by default with no user gesture");
promise_test(
async () => {
await test_driver.set_permission(
{name: 'storage-access'}, 'granted');
const {promise} = await RunCallbackWithGesture('b1', () => document.requestStorageAccess());
await promise;
// Cleanup
await test_driver.set_permission(
{name: 'storage-access'}, 'prompt');
},
'[' + testPrefix +
'] document.requestStorageAccess() should be resolved when called properly with a user gesture');
if (testPrefix == 'cross-origin-frame' || testPrefix == 'nested-cross-origin-frame') {
promise_test(
async t => {
await test_driver.set_permission(
{name: 'storage-access'}, 'prompt');
const {promise} = RunCallbackWithGesture('b2', () => {
return promise_rejects_dom(t, "NotAllowedError", document.requestStorageAccess(),
"document.requestStorageAccess() call without permission");
});
await promise;
},
'[' + testPrefix +
'] document.requestStorageAccess() should be rejected with a NotAllowedError without permission grant');
promise_test(
async t => {
await test_driver.set_permission(
{name: 'storage-access'}, 'denied');
const {promise} = RunCallbackWithGesture('b3', () => {
return promise_rejects_dom(t, "NotAllowedError", document.requestStorageAccess(),
"document.requestStorageAccess() call without permission");
});
await promise;
// Cleanup
await test_driver.set_permission(
{name: 'storage-access'}, 'prompt');
},
'[' + testPrefix +
'] document.requestStorageAccess() should be rejected with a NotAllowedError with denied permission');
}