blob: 695bd654bb57d35edbcdf8409aaf9c09af9f620e [file] [log] [blame]
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>This test validates resource timing information for a same-origin=>cross-origin=>same-origin redirect chain with Timing-Allow-Origin.</title>
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="resources/webperftestharness.js"></script>
<script src="resources/webperftestharnessextension.js"></script>
<script>
setup({explicit_done: true});
test_namespace('getEntriesByName');
const pageOrigin = get_host_info()['ORIGIN'];
const crossOrigin = get_host_info()['REMOTE_ORIGIN'];
</script>
</head>
<body>
<iframe id="frameContext" src="" style="width: 250px; height: 250px;"></iframe>
<script>
let destUrl = pageOrigin + '/resource-timing/resources/multi_redirect.py?';
destUrl += 'page_origin=' + pageOrigin;
destUrl += '&cross_origin=' + crossOrigin;
destUrl += '&final_resource=' + "/resource-timing/resources/blue-with-tao.png";
destUrl += '&tao_steps=3';
const taoStarImage = document.createElement('img');
taoStarImage.src = destUrl;
document.body.appendChild(taoStarImage);
destUrl += '&tao_value=' + pageOrigin;
// Due to the tainted origin flag, having the TAO header set to |pageOrigin| is insufficient.
// That is, the Timing-Allow-Origin check should fail in this case.
const taoPageOriginImage = document.createElement('img');
taoPageOriginImage.src = destUrl;
document.body.appendChild(taoPageOriginImage);
let visitedTaoStar = false;
let visitedTaoPageOrigin = false;
new PerformanceObserver(e => {
e.getEntries().forEach(entry => {
if (entry.name === taoStarImage.src) {
assert_false(visitedTaoStar);
visitedTaoStar = true;
test_tao_pass(entry);
} else if (entry.name === taoPageOriginImage.src) {
assert_false(visitedTaoPageOrigin);
visitedTaoPageOrigin = true;
test_tao_fail(entry);
}
if (visitedTaoStar && visitedTaoPageOrigin)
done();
});
}).observe({entryTypes: ['resource']});
</script>
</body>
</html>