OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <html> |
| 3 <head> |
| 4 <meta charset="utf-8"> |
| 5 <title>Navigation Timing 2 WPT</title> |
| 6 <link rel="author" title="Google" href="http://www.google.com/" /> |
| 7 <link rel="help" href="http://www.w3.org/TR/navigation-timing-2/#sec-Per
formanceNavigationTiming"/> |
| 8 <script src="/resources/testharness.js"></script> |
| 9 <script src="/resources/testharnessreport.js"></script> |
| 10 </head> |
| 11 <body> |
| 12 <h1>Description</h1> |
| 13 <p>This test validates that the values of nav timing 2 instance's timing
-related attributes are in certain order and the others are of expected values.<
/p> |
| 14 |
| 15 <script> |
| 16 var navTiming2EventOrder1 = [ |
| 17 'startTime', |
| 18 'redirectStart', |
| 19 //'unloadEventStart', |
| 20 'redirectEnd', |
| 21 //'unloadEventEnd', |
| 22 'fetchStart', |
| 23 'domainLookupStart', |
| 24 'domainLookupEnd', |
| 25 'connectStart', |
| 26 //'secureConnectionStart', |
| 27 'connectEnd', |
| 28 'requestStart', |
| 29 'responseStart', |
| 30 'responseEnd', |
| 31 'domInteractive', |
| 32 'domContentLoadedEventStart', |
| 33 'domContentLoadedEventEnd', |
| 34 'domComplete', |
| 35 'loadEventStart', |
| 36 'loadEventEnd' |
| 37 ]; |
| 38 |
| 39 var navTiming2EventOrder2 = [ |
| 40 'redirectStart', |
| 41 'unloadEventStart', |
| 42 'redirectEnd', |
| 43 'unloadEventEnd', |
| 44 'fetchStart' |
| 45 ]; |
| 46 |
| 47 var navTiming2EventOrder3 = [ |
| 48 'connectStart', |
| 49 'secureConnectionStart', |
| 50 'connectEnd' |
| 51 ]; |
| 52 |
| 53 function verifyTimingEventOrder(eventOrder, timingEntry) { |
| 54 for (var i = 0; i < eventOrder.length - 1; i++) { |
| 55 assert_true(timingEntry[eventOrder[i]] <= timingEntry[eventOrder
[i + 1]], |
| 56 "Expected " + eventOrder[i] + " to be no greater than " + ev
entOrder[i + 1] + "."); |
| 57 } |
| 58 } |
| 59 |
| 60 async_test(function (t) { |
| 61 var observer = new PerformanceObserver( |
| 62 t.step_func(function (entryList) { |
| 63 var entries = entryList.getEntries(); |
| 64 assert_equals(entries[0].entryType, "navigation", |
| 65 "Expected entryType to be: navigation."); |
| 66 assert_equals(entries[0].name, "document", |
| 67 "Expected name to be: document."); |
| 68 assert_equals(entries[0].startTime, 0, |
| 69 "Expected startTime to be: 0."); |
| 70 assert_equals(entries[0].duration, entries[0].loadEventEnd, |
| 71 "Expected duration to be equal to loadEventEnd."); |
| 72 assert_equals(entries[0].initiatorType, "navigation", |
| 73 "Expected initiatorType to be: navigation."); |
| 74 // This test may fail when response is from cach. Disable or
clean cach before |
| 75 // running this test. |
| 76 assert_true(entries[0].transferSize > entries[0].encodedBody
Size, |
| 77 "Expected transferSize to be greater than encodedBodySiz
e in uncached navigation."); |
| 78 assert_equals(entries[0].encodedBodySize, 4140); |
| 79 assert_equals(entries[0].decodedBodySize, 4140); |
| 80 verifyTimingEventOrder(entries[0], navTiming2EventOrder1); |
| 81 // When unloadEvent happens |
| 82 if (entries[0]["unloadEventStart"] != 0) { |
| 83 verifyTimingEventOrder(entries[0], navTiming2EventOrder2
); |
| 84 } |
| 85 // When a secure transport is used |
| 86 if (entries[0]["secureConnectionStart"] != 0) { |
| 87 verifyTimingEventOrder(entries[0], navTiming2EventOrder3
); |
| 88 } |
| 89 observer.disconnect(); |
| 90 t.done(); |
| 91 }) |
| 92 ); |
| 93 observer.observe({entryTypes: ["navigation"]}); |
| 94 |
| 95 }, "Performance navigation timing instance's value is reasonable."); |
| 96 </script> |
| 97 </body> |
| 98 </html> |
OLD | NEW |