| <!DOCTYPE html> | 
 | <html> | 
 | <head> | 
 | <meta charset="utf-8"> | 
 | <title>Navigation Timing IDL tests</title> | 
 | <link rel="author" title="W3C" href="http://www.w3.org/" /> | 
 | <link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface"/> | 
 | <link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"/> | 
 | <link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute"/> | 
 | <script src="/resources/testharness.js"></script> | 
 | <script src="/resources/testharnessreport.js"></script> | 
 | <script src="/resources/WebIDLParser.js"></script> | 
 | <script src="/resources/idlharness.js"></script> | 
 | </head> | 
 | <body> | 
 | <h1>Navigation Timing IDL tests</h1> | 
 | <div id="log"></div> | 
 |  | 
 | <pre id='untested_idl' style='display:none'> | 
 |  | 
 | [PrimaryGlobal] | 
 | interface Window { | 
 | }; | 
 |  | 
 | callback interface EventListener { | 
 |   void handleEvent(Event event); | 
 | }; | 
 |  | 
 | interface Event { | 
 |     // PhaseType | 
 |     const unsigned short NONE = 0; | 
 |     const unsigned short CAPTURING_PHASE = 1; | 
 |     const unsigned short AT_TARGET = 2; | 
 |     const unsigned short BUBBLING_PHASE = 3; | 
 |     readonly    attribute DOMString      type; | 
 |     readonly    attribute EventTarget?   target; | 
 |     readonly    attribute EventTarget?   currentTarget; | 
 |     readonly    attribute unsigned short eventPhase; | 
 |     readonly    attribute boolean        bubbles; | 
 |     readonly    attribute boolean        cancelable; | 
 |     readonly    attribute DOMTimeStamp   timeStamp; | 
 |     void stopPropagation (); | 
 |     void preventDefault (); | 
 |     void initEvent (DOMString eventTypeArg, boolean bubblesArg, boolean cancelableArg); | 
 |     // Introduced in DOM Level 3 | 
 |     void stopImmediatePropagation (); | 
 |     readonly    attribute boolean        defaultPrevented; | 
 |     readonly    attribute boolean        isTrusted; | 
 | }; | 
 |  | 
 | interface EventTarget { | 
 |     // Modified in DOM Level 3 | 
 |     void    addEventListener (DOMString type, EventListener? listener, optional boolean useCapture = false); | 
 |     void    removeEventListener (DOMString type, EventListener? listener, optional boolean useCapture = false); | 
 |     boolean dispatchEvent (Event event); | 
 | }; | 
 |  | 
 | </pre> | 
 |  | 
 | <pre id='idl'> | 
 | interface PerformanceTiming { | 
 |   readonly attribute unsigned long long navigationStart; | 
 |   readonly attribute unsigned long long unloadEventStart; | 
 |   readonly attribute unsigned long long unloadEventEnd; | 
 |   readonly attribute unsigned long long redirectStart; | 
 |   readonly attribute unsigned long long redirectEnd; | 
 |   readonly attribute unsigned long long fetchStart; | 
 |   readonly attribute unsigned long long domainLookupStart; | 
 |   readonly attribute unsigned long long domainLookupEnd; | 
 |   readonly attribute unsigned long long connectStart; | 
 |   readonly attribute unsigned long long connectEnd; | 
 |   readonly attribute unsigned long long secureConnectionStart; | 
 |   readonly attribute unsigned long long requestStart; | 
 |   readonly attribute unsigned long long responseStart; | 
 |   readonly attribute unsigned long long responseEnd; | 
 |   readonly attribute unsigned long long domLoading; | 
 |   readonly attribute unsigned long long domInteractive; | 
 |   readonly attribute unsigned long long domContentLoadedEventStart; | 
 |   readonly attribute unsigned long long domContentLoadedEventEnd; | 
 |   readonly attribute unsigned long long domComplete; | 
 |   readonly attribute unsigned long long loadEventStart; | 
 |   readonly attribute unsigned long long loadEventEnd; | 
 | }; | 
 |  | 
 | interface PerformanceNavigation { | 
 |   const unsigned short TYPE_NAVIGATE = 0; | 
 |   const unsigned short TYPE_RELOAD = 1; | 
 |   const unsigned short TYPE_BACK_FORWARD = 2; | 
 |   const unsigned short TYPE_RESERVED = 255; | 
 |   readonly attribute unsigned short type; | 
 |   readonly attribute unsigned short redirectCount; | 
 | }; | 
 |  | 
 | interface Performance : EventTarget { | 
 |   readonly attribute PerformanceTiming timing; | 
 |   readonly attribute PerformanceNavigation navigation; | 
 | }; | 
 |  | 
 | partial interface Window { | 
 |   [Replaceable] readonly attribute Performance performance; | 
 | }; | 
 | </pre> | 
 |  | 
 | <script> | 
 | (function() { | 
 |   var idl_array = new IdlArray(); | 
 |  | 
 |   idl_array.add_untested_idls(document.getElementById("untested_idl").textContent); | 
 |   idl_array.add_idls(document.getElementById("idl").textContent); | 
 |  | 
 |   idl_array.add_objects({Window: ["window"], | 
 |                          Performance: ["window.performance"], | 
 |                          PerformanceNavigation: ["window.performance.navigation"], | 
 |                          PerformanceTiming: ["window.performance.timing"]}); | 
 |  | 
 |   idl_array.test(); | 
 | })(); | 
 | </script> | 
 | </body> | 
 | </html> |