<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8" />
        <title>window.performance.timing.redirect attributes on a same-origin server redirected navigation</title>
        <link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
        <link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface"/>
        <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>
        <script src="resources/webperftestharness.js"></script>

        <script>
            function onload_test()
            {
                test_namespace('navigation');
                if (performanceNamespace === undefined)
                {
                    // avoid script errors
                    done();
                    return;
                }

                performanceNamespace = document.getElementById("frameContext").contentWindow.performance;
                test_equals(performanceNamespace.navigation.type,
                        performanceNamespace.navigation.TYPE_NAVIGATE,
                        'timing.navigation.type is TYPE_NAVIGATE');
                test_equals(performanceNamespace.navigation.redirectCount, 1, 'navigation.redirectCount == 1 on an server redirected navigation');

                test_timing_greater_than('navigationStart', 0);

                test_timing_order('redirectStart', 'navigationStart');
                test_timing_order('redirectEnd', 'redirectStart');
                test_timing_order('fetchStart', 'redirectEnd');
            }
        </script>

    </head>
    <body>
        <h1>Description</h1>
        <p>This test validates the values of the window.performance.redirectCount and the
           window.performance.timing.redirectStart/End times for a same-origin server side redirect navigation.</p>

        <div id="log"></div>
        <br />
        <iframe id="frameContext" onload="onload_test();" src="/common/redirect.py?location=/navigation-timing/resources/blank_page_green.html" style="width: 250px; height: 250px;"></iframe>
    </body>
</html>
