<!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>
    </head>
    <body>
        <h1>Description</h1>
        <p>This test validates that PerformanceObserver can observe nav timing 2 instance and that the expected attributes in nav timing 2 instance exist (but does not validate that the values are correct).</p>

        <script>
        var navTiming2Attributes = [
            'connectEnd',
            'connectStart',
            'decodedBodySize',
            'domComplete',
            'domContentLoadedEventEnd',
            'domContentLoadedEventStart',
            'domInteractive',
            'domainLookupEnd',
            'domainLookupStart',
            'duration',
            'encodedBodySize',
            'entryType',
            'fetchStart',
            'initiatorType',
            'loadEventEnd',
            'loadEventStart',
            'name',
            'nextHopProtocol',
            'redirectCount',
            'redirectEnd',
            'redirectStart',
            'requestStart',
            'responseEnd',
            'responseStart',
            'secureConnectionStart',
            'transferSize',
            'type',
            'unloadEventEnd',
            'unloadEventStart',
            'workerStart'
        ];
        async_test(function (t) {
            var observer = new PerformanceObserver(
                t.step_func(function (entryList) {
                    var entries = entryList.getEntries();
                    assert_equals(entries.length, 1,
                        "There should be only one navigation timing instance.");
                    for (var i = 0; i < navTiming2Attributes.length; i++) {
                        assert_true(navTiming2Attributes[i] in entries[0],
                            "Expected attribute: " + navTiming2Attributes[i] + ".");
                    }
                    observer.disconnect();
                    t.done();
                })
            );
            observer.observe({entryTypes: ["navigation"]});

        }, "Performance navigation timing entries are observable.");
        </script>
    </body>
</html>
