<!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>
