# Performance Timeline IDL tests

    interface Performance {
    };

    [Exposed=(Window,Worker)]
    interface PerformanceEntry {
        readonly attribute DOMString           name;
        readonly attribute DOMString           entryType;
        readonly attribute DOMHighResTimeStamp startTime;
        readonly attribute DOMHighResTimeStamp duration;
        serializer = {attribute};
    };

    dictionary PerformanceEntryFilterOptions {
        DOMString name;
        DOMString entryType;
        DOMString initiatorType;
    };

    partial interface Performance {
        PerformanceEntryList getEntries(optional PerformanceEntryFilterOptions filter);
        PerformanceEntryList getEntriesByType(DOMString type);
        PerformanceEntryList getEntriesByName(DOMString name,
                                              optional DOMString type);
    };

    typedef sequence <PerformanceEntry> PerformanceEntryList;

    dictionary PerformanceObserverInit {
        required sequence<DOMString> entryTypes;
    };

    [Exposed=(Window,Worker)]
    interface PerformanceObserverEntryList {
        PerformanceEntryList getEntries(optional PerformanceEntryFilterOptions filter);
        PerformanceEntryList getEntriesByType(DOMString type);
        PerformanceEntryList getEntriesByName(DOMString name,
                                              optional DOMString type);
    };

    callback PerformanceObserverCallback = void (PerformanceObserverEntryList entries,
                                                 PerformanceObserver observer);

    [Constructor(PerformanceObserverCallback callback),
     Exposed=(Window,Worker)]
    interface PerformanceObserver {
        void observe(PerformanceObserverInit options);
        void disconnect();
    };