blob: 4a8d2a67b83e5c8be3c450120a638b83c497ee94 [file] [log] [blame]
<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script>
function loadIFrame(src) {
return new Promise(function(resolve, reject) {
var iframe = document.createElement('iframe');
iframe.onload = function() { resolve(iframe); };
iframe.src = src;
document.documentElement.appendChild(iframe);
});
}
async function imageLoadCount(uuid)
{
const response = await fetch('resources/image-load.py?uuid=' + uuid, { method: 'POST' });
return response.text();
}
async function navigateIFrame(iframe, uuid)
{
const promise = new Promise(resolve => iframe.onload = resolve);
iframe.src = "resources/iframe-with-image.py?uuid=" + uuid;
await promise;
return imageLoadCount(uuid);
}
async function reloadIFrame(iframe, uuid)
{
const promise = new Promise(resolve => iframe.onload = resolve);
iframe.contentWindow.location.reload();
await promise;
return imageLoadCount(uuid);
}
function resetIFrame(iframe)
{
const promise = new Promise(resolve => { iframe.onload = resolve; });
iframe.src = "about:blank";
return promise;
}
promise_test(async (test) => {
const uuid = token();
const iframe = await loadIFrame("about:blank");
const token1 = await navigateIFrame(iframe, uuid);
await resetIFrame(iframe);
const token2 = await navigateIFrame(iframe, uuid);
const token3 = await reloadIFrame(iframe, uuid);
assert_equals(token1, "1", "navigating to");
assert_equals(token2, "2", "after new navigation");
assert_equals(token3, "3", "after reload");
iframe.remove();
}, "Ensure image is not speculatively loaded after a reload");
</script>