| <html> |
| <head> |
| <script> |
| const hashArguments = document.location.hash.substring(1).split(","); |
| const userShouldGrantAccess = hashArguments[0] === "userShouldGrantAccess"; |
| const userShouldBeConsulted = hashArguments[1] === "userShouldBeConsulted"; |
| const policyShouldGrantAccess = hashArguments[2] === "policyShouldGrantAccess"; |
| |
| if (internals && userShouldGrantAccess) |
| internals.setUserGrantsStorageAccess(true); |
| |
| var requestStorageAccessResolved; |
| |
| function makeRequestWithoutUserGesture() { |
| var promise = document.requestStorageAccess(); |
| promise.then( |
| function () { |
| requestStorageAccessResolved = true; |
| continueAfterRequestWithoutUserGesture(); |
| }, |
| function () { |
| requestStorageAccessResolved = false; |
| continueAfterRequestWithoutUserGesture(); |
| } |
| ); |
| } |
| |
| function continueAfterRequestWithoutUserGesture() { |
| var promise = document.hasStorageAccess(); |
| promise.then( |
| function (hasAccess) { |
| if (requestStorageAccessResolved |
| && hasAccess |
| && (userShouldGrantAccess || !userShouldBeConsulted) |
| && policyShouldGrantAccess) |
| top.postMessage("PASS Storage access was granted.", "http://127.0.0.1:8000"); |
| else if (!hasAccess |
| && !requestStorageAccessResolved |
| && ((!userShouldGrantAccess && userShouldBeConsulted) || !policyShouldGrantAccess)) |
| top.postMessage("PASS Storage access was denied.", "http://127.0.0.1:8000"); |
| else |
| top.postMessage("FAIL Storage access was " + |
| (hasAccess ? "" : "not ") + |
| "granted and requestStorageAccessResolved was " + |
| (requestStorageAccessResolved ? "" : "not ") + |
| "granted but should " + |
| (userShouldGrantAccess && policyShouldGrantAccess ? "" : "not ") + |
| "have been granted.", "http://127.0.0.1:8000"); |
| }, |
| function (reason) { |
| top.postMessage("FAIL document.hasStorageAccess() was rejected. Reason: " + reason, "http://127.0.0.1:8000"); |
| } |
| ); |
| } |
| </script> |
| </head> |
| <body onload="makeRequestWithoutUserGesture()"> |
| </body> |
| </html> |