Source code
Revision control
Copy as Markdown
Other Tools
<!doctype html>
<meta charset="utf-8">
<script src="/cookies/resources/cookie-helper.sub.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="/resources/testharness.js"></script>
<!-- no testharnessreport.js -->
<script src="/storage-access-api/helpers.js"></script>
<script>
'use strict';
(async function() {
test_driver.set_test_context(window.top);
const testPrefix = 'sandboxed-iframe-allow-storage-access-by-user-activation';
test(() => {
let iframe = document.createElement('iframe');
assert_true(
iframe.sandbox.supports('allow-storage-access-by-user-activation'),
'`allow-storage-access-by-user-activation`' +
'sandbox attribute should be supported');
}, '`allow-storage-access-by-user-activation` sandbox attribute is supported');
// Ideally this would check whether the user-activation condition changes
// the behavior; however, due to limitations in the test driver, the
// 'prompt' permission state is effectively the same as 'denied' from the
// perspective of platform tests.
promise_test(async t => {
await test_driver.set_permission({name: 'storage-access'}, 'granted');
await MaybeSetStorageAccess('*', '*', 'blocked');
await document.requestStorageAccess();
assert_true(
await CanAccessCookiesViaHTTP(),
'After obtaining storage access, subresource requests from the frame should send and set cookies.');
assert_true(
CanAccessCookiesViaJS(),
'After obtaining storage access, scripts in the frame should be able to access cookies.');
}, `[${testPrefix}] document.requestStorageAccess() should resolve even without a user gesture when already granted.`);
promise_test(async () => {
await test_driver.set_permission({name: 'storage-access'}, 'granted');
await MaybeSetStorageAccess('*', '*', 'blocked');
await RunCallbackWithGesture(async () => {
await document.requestStorageAccess();
});
assert_true(
await CanAccessCookiesViaHTTP(),
'After obtaining storage access, subresource requests from the frame should send and set cookies.');
assert_true(
CanAccessCookiesViaJS(),
'After obtaining storage access, scripts in the frame should be able to access cookies.');
}, `[${testPrefix}] document.requestStorageAccess() should resolve with a user gesture`);
})();
</script>