| <!DOCTYPE html> |
| <html> |
| <body onload="runTest()"> |
| <script src="/js-test-resources/js-test.js"></script> |
| <script src="/js-test-resources/ui-helper.js"></script> |
| <script src="/resourceLoadStatistics/resources/util.js"></script> |
| <script> |
| description("Tests that top frame storage access is always granted in case the page requests it."); |
| jsTestIsAsync = true; |
| |
| function activateElement(elementId) { |
| var element = document.getElementById(elementId); |
| var centerX = element.offsetLeft + element.offsetWidth / 2; |
| var centerY = element.offsetTop + element.offsetHeight / 2; |
| UIHelper.activateAt(centerX, centerY).then( |
| function () { |
| }, |
| function () { |
| testFailed("Promise rejected."); |
| setEnableFeature(false, finishJSTest); |
| } |
| ); |
| } |
| |
| var hasStorageAccess; |
| var requestStorageAccessResolved; |
| |
| function makeRequestWithUserGesture() { |
| setEnableFeature(true, function() { |
| var promise = document.requestStorageAccess(); |
| promise.then( |
| function () { |
| requestStorageAccessResolved = true; |
| continueAfterRequestWithUserGesture(); |
| }, |
| function () { |
| requestStorageAccessResolved = false; |
| continueAfterRequestWithUserGesture(); |
| } |
| ); |
| }); |
| } |
| |
| function continueAfterRequestWithUserGesture() { |
| var promise = document.hasStorageAccess(); |
| promise.then( |
| function (hasAccess) { |
| hasStorageAccess = hasAccess; |
| shouldBe("requestStorageAccessResolved", "true"); |
| shouldBe("hasStorageAccess", "true"); |
| setEnableFeature(false, finishJSTest); |
| }, |
| function (reason) { |
| testFailed("document.hasStorageAccess() was rejected. Reason: " + reason); |
| setEnableFeature(false, finishJSTest); |
| } |
| ); |
| } |
| |
| function runTest() { |
| testRunner.setUseITPDatabase(true); |
| activateElement("theButton"); |
| } |
| </script> |
| <button id="theButton" onclick="makeRequestWithUserGesture()">Request Access</button> |
| </body> |
| </html> |