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

            var reload_frame;

            function onload_test()
            {
                reload_frame = document.getElementById("frameContext");
                reload_frame.onload = function() {
                    setTimeout(do_test, 0);
                }
                setTimeout("reload_the_frame();", 100);
            }

            function reload_the_frame()
            {
                reload_frame.contentWindow.location.reload(true);
            }

            function do_test()
            {
                var newNavTiming = document.getElementById("frameContext").contentWindow.performance.getEntriesByType("navigation")[0];
                assert_equals(newNavTiming.type, "reload", "Expected navigation type to be reload.");
                assert_true(newNavTiming.unloadEventStart > 0, "Expected unloadEventStart to be greater than 0.");
                assert_true(newNavTiming.unloadEventEnd > 0, "Expected unloadEventEnd to be greater than 0.");
                done();
            }
        </script>
    </head>
    <body onload="onload_test();">
        <h1>Description</h1>
        <p>This test validates the value of window.performance.getEntriesByType("navigation")[0].(type/unloadEventEnd/unloadEventStart) with a reloaded navigation.</p>

        <p>This page should be loaded with a green background frame below. The frame will be automatically reloaded
        and then verified that
        <ul>
            <li>The window.performance.getEntriesByType("navigation").type = "reload" after reload</li>
            <li>The window.performance.getEntriesByType("navigation").unloadEventStart > 0 after reload</li>
            <li>The window.performance.getEntriesByType("navigation").unloadEventEnd > 0 after reload</li>
        </ul>
        </p>

        <iframe id="frameContext" src="resources/blank_page_green.html" style="width: 250px; height: 250px;"></iframe>
    </body>
</html>
