blob: 46714fedfb907f98dbff40ca60e2272518f8a74b [file] [log] [blame]
<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";
const isSameOriginIframe = hashArguments[3] === "isSameOriginIframe";
const originIsNull = hashArguments[4] === "originIsNull";
if (window.testRunner) {
testRunner.setCanOpenWindows(false);
testRunner.setPopupBlockingEnabled(true);
testRunner.setCloseRemainingWindowsWhenComplete(true);
}
var requestStorageAccessResolved;
function messageToTop(message) {
top.postMessage(message, "http://127.0.0.1:8000");
}
function windowWasOpened()
{
if (userShouldBeConsulted && userShouldGrantAccess)
messageToTop("PASS Window was successfully opened with user interaction.");
else if (userShouldBeConsulted && !userShouldGrantAccess)
messageToTop("FAIL Window was opened even though the user explicitly declined permission.");
else if (!userShouldBeConsulted && !userShouldGrantAccess)
messageToTop("PASS Window was successfully opened with user interaction since the user was never consulted/prompted.");
else
messageToTop("FAIL Conflicting instructions: !userShouldBeConsulted && userShouldGrantAccess .");
}
function makeRequestWithUserGesture() {
var promise = document.requestStorageAccess();
promise.then(
function () {
requestStorageAccessResolved = true;
continueAfterRequestWithUserGesture();
},
function () {
requestStorageAccessResolved = false;
continueAfterRequestWithUserGesture();
}
);
}
function continueAfterRequestWithUserGesture() {
var win = window.open("request-storage-access-second-window.html", "test window");
if (!win) {
if (userShouldBeConsulted && userShouldGrantAccess)
messageToTop("FAIL Window was not opened even though the user explicitly granted permission.");
else if (userShouldBeConsulted && !userShouldGrantAccess)
messageToTop("PASS Window was blocked from opening.");
else if (!userShouldBeConsulted && !userShouldGrantAccess)
messageToTop("FAIL Window was blocked from opening even though the user was never consulted/prompted.");
else
messageToTop("FAIL Conflicting instructions: !userShouldBeConsulted && userShouldGrantAccess .");
}
}
</script>
</head>
<body onclick="makeRequestWithUserGesture()">
</body>
</html>