blob: 7a7d1acd5c57f04004f3f2f0a1909c5fb3cd54fe [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);
});
}
function resetIFrame(iframe)
{
const promise = new Promise(resolve => { iframe.onload = resolve; });
iframe.src = "about:blank";
return promise;
}
function navigateIFrame(iframe, src)
{
const promise = new Promise(resolve => window.resolveToken = resolve);
iframe.src = "resources/xhr-and-fetch.html#xhr";
return promise;
}
function reloadIFrame(iframe, src)
{
const promise = new Promise(resolve => window.resolveToken = resolve);
iframe.contentWindow.location.reload();
return promise;
}
promise_test(async (test) => {
window.uuid = token();
window.fetchTest = true;
const iframe = await loadIFrame("about:blank");
const token1 = await navigateIFrame(iframe, "resources/xhr-and-fetch.html?fetch");
await resetIFrame(iframe);
const token2 = await navigateIFrame(iframe, "resources/xhr-and-fetch.html?fetch");
const token3 = await reloadIFrame(iframe);
assert_equals(token1, "0", "navigating to");
assert_equals(token2, "0", "after reload");
// token2 revalidation + token3 reload hence two loads.
assert_equals(token3, "2", "after reload");
iframe.remove();
}, "Ensure fetch is not speculatively loaded");
promise_test(async (test) => {
window.uuid = token();
window.fetchTest = false;
const iframe = await loadIFrame("about:blank");
const token1 = await navigateIFrame(iframe, "resources/xhr-and-fetch.html?xhr");
await resetIFrame(iframe);
const token2 = await navigateIFrame(iframe, "resources/xhr-and-fetch.html?xhr");
const token3 = await reloadIFrame(iframe);
assert_equals(token1, "0", "navigating to");
assert_equals(token2, "0", "after reload");
// token2 revalidation + token3 reload hence two loads.
assert_equals(token3, "2", "after reload");
iframe.remove();
}, "Ensure XHR is not speculatively loaded");
</script>