Newer
Older
minerva / Userland / Libraries / LibWeb / HighResolutionTime / Performance.idl
@minerva minerva on 13 Jul 1 KB Initial commit
#import <DOM/EventTarget.idl>
#import <HighResolutionTime/DOMHighResTimeStamp.idl>
#import <NavigationTiming/PerformanceNavigation.idl>
#import <NavigationTiming/PerformanceTiming.idl>
#import <PerformanceTimeline/PerformanceEntry.idl>
#import <UserTiming/PerformanceMark.idl>
#import <UserTiming/PerformanceMeasure.idl>

// https://www.w3.org/TR/performance-timeline/#dom-performanceentrylist
typedef sequence<PerformanceEntry> PerformanceEntryList;

// https://w3c.github.io/hr-time/#sec-performance
[Exposed=(Window, Worker)]
interface Performance : EventTarget {
    DOMHighResTimeStamp now();
    readonly attribute DOMHighResTimeStamp timeOrigin;
    [Default] object toJSON();

    // https://w3c.github.io/user-timing/#extensions-performance-interface
    // "User Timing" extensions to the Performance interface
    PerformanceMark mark(DOMString markName, optional PerformanceMarkOptions markOptions = {});
    undefined clearMarks(optional DOMString markName);
    PerformanceMeasure measure(DOMString measureName, optional (DOMString or PerformanceMeasureOptions) startOrMeasureOptions = {}, optional DOMString endMark);
    undefined clearMeasures(optional DOMString measureName);

    // https://www.w3.org/TR/performance-timeline/#extensions-to-the-performance-interface
    // "Performance Timeline" extensions to the Performance interface
    PerformanceEntryList getEntries();
    PerformanceEntryList getEntriesByType(DOMString type);
    PerformanceEntryList getEntriesByName(DOMString name, optional DOMString type);

    // https://w3c.github.io/navigation-timing/#extensions-to-the-performance-interface
    // Obsolete "Navigation Timing" extensions to the Performance interface
    [SameObject]
    readonly attribute PerformanceTiming timing;
    [SameObject]
    readonly attribute PerformanceNavigation navigation;
};