# Navigation Timing IDL tests

    [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);
    };

    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;
    };