User Timing IDL tests


PASS Partial interface Performance: original interface defined 
PASS Performance interface: operation mark(DOMString) 
PASS Performance interface: operation clearMarks(DOMString) 
PASS Performance interface: operation measure(DOMString, DOMString, DOMString) 
PASS Performance interface: operation clearMeasures(DOMString) 
PASS Performance interface: window.performance must inherit property "mark(DOMString)" with the proper type 
PASS Performance interface: calling mark(DOMString) on window.performance with too few arguments must throw TypeError 
PASS Performance interface: window.performance must inherit property "clearMarks(DOMString)" with the proper type 
PASS Performance interface: calling clearMarks(DOMString) on window.performance with too few arguments must throw TypeError 
PASS Performance interface: window.performance must inherit property "measure(DOMString, DOMString, DOMString)" with the proper type 
PASS Performance interface: calling measure(DOMString, DOMString, DOMString) on window.performance with too few arguments must throw TypeError 
PASS Performance interface: window.performance must inherit property "clearMeasures(DOMString)" with the proper type 
PASS Performance interface: calling clearMeasures(DOMString) on window.performance with too few arguments must throw TypeError 
PASS PerformanceMark interface: existence and properties of interface object 
PASS PerformanceMark interface object length 
PASS PerformanceMark interface object name 
PASS PerformanceMark interface: existence and properties of interface prototype object 
PASS PerformanceMark interface: existence and properties of interface prototype object's "constructor" property 
PASS PerformanceMark interface: existence and properties of interface prototype object's @@unscopables property 
PASS PerformanceMeasure interface: existence and properties of interface object 
PASS PerformanceMeasure interface object length 
PASS PerformanceMeasure interface object name 
PASS PerformanceMeasure interface: existence and properties of interface prototype object 
PASS PerformanceMeasure interface: existence and properties of interface prototype object's "constructor" property 
PASS PerformanceMeasure interface: existence and properties of interface prototype object's @@unscopables property 
partial interface Performance {
    void mark(DOMString markName);
    void clearMarks(optional  DOMString markName);

    void measure(DOMString measureName, optional DOMString startMark, optional DOMString endMark);
    void clearMeasures(optional DOMString measureName);
};

[Exposed=(Window,Worker)]
interface PerformanceMark : PerformanceEntry {
};

[Exposed=(Window,Worker)]
interface PerformanceMeasure : PerformanceEntry {
};


