<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Navigation Timing 2 WPT</title>
        <link rel="author" title="Google" href="http://www.google.com/" />
        <link rel="help" href="http://www.w3.org/TR/navigation-timing-2/#sec-PerformanceNavigationTiming"/>
        <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>
        <script src="/common/utils.js"></script>
        <script>
            setup({ single_test: true });

            function onload_test()
            {
                const frame_performance = document.getElementById("frameContext").contentWindow.performance;
                assert_equals(frame_performance.getEntriesByType("navigation")[0].type,
                    "navigate",
                    "Expected navigation type to be navigate.");
                assert_equals(frame_performance.getEntriesByType("navigation")[0].redirectCount, 0,
                    "Expected redirectCount to be 0.");
                assert_equals(frame_performance.getEntriesByType("navigation")[0].redirectStart, 0,
                    "Expected redirectStart to be 0.");
                assert_equals(frame_performance.getEntriesByType("navigation")[0].redirectEnd, 0,
                    "Expected redirectEnd to be 0.");
                done();
            }
        </script>

    </head>
    <body>
        <h1>Description</h1>
        <p>This test validates the values of the window.performance.getEntriesByType("navigation")[0].redirectCount and the
           window.performance.getEntriesByType("navigation")[0].redirectStart/End times for a cross-origin server side redirect navigation when the final
           document is the same as the original origin.</p>

        <iframe id="frameContext" src="" style="width: 250px; height: 250px;"></iframe>
        <script>
            // combine the page origin and redirect origin into the IFRAME's src URL
            const destUrl_first = make_absolute_url({subdomain: "www",
                                             path: "/common/redirect-opt-in.py",
                                             query: "location=" + make_absolute_url(
                                                         {path: "/navigation-timing/resources/blank_page_green.html"})
                                             });
            const destUrl = make_absolute_url({
                                             path: "/common/redirect.py",
                                             query: "location=" + destUrl_first});
            let frameContext = document.getElementById("frameContext");
            frameContext.onload = onload_test;
            frameContext.src = destUrl;
        </script>
    </body>
</html>
