| <!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> |