93 lines
4.1 KiB
JavaScript
93 lines
4.1 KiB
JavaScript
if (self.importScripts)
|
|
importScripts("../../resources/js-test-pre.js");
|
|
|
|
self.jsTestIsAsync = true;
|
|
|
|
if (self.window)
|
|
description("Basic Behavior test for PerformanceObserver APIs.");
|
|
|
|
// PerformanceObservers that are not actively observing should not fire.
|
|
let observerNotObserving = new PerformanceObserver(function() {
|
|
testFailed("PerformanceObserver never registered should not be called");
|
|
});
|
|
|
|
let observerNotObserving2 = new PerformanceObserver(function() {
|
|
testFailed("PerformanceObserver not actively observing should not be called");
|
|
});
|
|
observerNotObserving2.observe({entryTypes: ["mark"]});
|
|
observerNotObserving2.disconnect();
|
|
|
|
// PerformanceObservers for different entry types should not fire.
|
|
let observerNotMarks = new PerformanceObserver(function() {
|
|
testFailed("PerformanceObserver observing measures should not be called");
|
|
});
|
|
|
|
// Observer sees marks while it is registered.
|
|
performance.mark("mark1");
|
|
self.observer = new PerformanceObserver(function(list, obs) {
|
|
self.argumentsLength = arguments.length;
|
|
self.list = list;
|
|
self.obs = obs;
|
|
self.thisObject = this;
|
|
|
|
debug("Inside PerformanceObserver callback");
|
|
shouldBeTrue(`argumentsLength === 2`);
|
|
shouldBeTrue(`list instanceof PerformanceObserverEntryList`);
|
|
shouldBeTrue(`obs instanceof PerformanceObserver`);
|
|
shouldBeTrue(`obs === observer`);
|
|
// FIXME: <https://webkit.org/b/167549> Invoking generated callback should allow setting the `this` object
|
|
shouldBeTrue(`thisObject instanceof PerformanceObserver`);
|
|
shouldBeTrue(`thisObject === observer`);
|
|
|
|
debug("");
|
|
debug("PerformanceObserverEntryList APIs");
|
|
|
|
shouldBeTrue(`list.getEntries() instanceof Array`);
|
|
shouldBeTrue(`list.getEntries().length === 2`);
|
|
shouldBeTrue(`list.getEntries()[0] instanceof PerformanceEntry`);
|
|
shouldBeEqualToString(`list.getEntries()[0].name`, "mark3");
|
|
shouldBeEqualToString(`list.getEntries()[1].name`, "mark4");
|
|
shouldBeTrue(`list.getEntries()[0].startTime <= list.getEntries()[1].startTime`);
|
|
|
|
shouldThrow(`list.getEntriesByType()`);
|
|
shouldBeTrue(`list.getEntriesByType("not-real").length === 0`);
|
|
shouldBeTrue(`list.getEntriesByType("mark").length === 2`);
|
|
shouldBeTrue(`list.getEntriesByType("mark")[0] instanceof PerformanceEntry`);
|
|
shouldBeEqualToString(`list.getEntriesByType("mark")[0].name`, "mark3");
|
|
shouldBeEqualToString(`list.getEntriesByType("mark")[1].name`, "mark4");
|
|
|
|
shouldThrow(`list.getEntriesByName()`);
|
|
shouldBeTrue(`list.getEntriesByName("not-real").length === 0`);
|
|
shouldBeTrue(`list.getEntriesByName("mark1").length === 0`);
|
|
shouldBeTrue(`list.getEntriesByName("mark3").length === 1`);
|
|
shouldBeTrue(`list.getEntriesByName("mark3")[0] instanceof PerformanceEntry`);
|
|
shouldBeEqualToString(`list.getEntriesByName("mark3")[0].name`, "mark3");
|
|
shouldBeTrue(`list.getEntriesByName("mark4").length === 1`);
|
|
shouldBeTrue(`list.getEntriesByName("mark4")[0] instanceof PerformanceEntry`);
|
|
shouldBeEqualToString(`list.getEntriesByName("mark4")[0].name`, "mark4");
|
|
|
|
shouldThrow(`list.getEntriesByName()`);
|
|
shouldBeTrue(`list.getEntriesByName("not-real").length === 0`);
|
|
shouldBeTrue(`list.getEntriesByName("mark1").length === 0`);
|
|
shouldBeTrue(`list.getEntriesByName("mark3").length === 1`);
|
|
shouldBeTrue(`list.getEntriesByName("mark3")[0] instanceof PerformanceEntry`);
|
|
shouldBeEqualToString(`list.getEntriesByName("mark3")[0].name`, "mark3");
|
|
shouldBeTrue(`list.getEntriesByName("mark4").length === 1`);
|
|
shouldBeTrue(`list.getEntriesByName("mark4")[0] instanceof PerformanceEntry`);
|
|
shouldBeEqualToString(`list.getEntriesByName("mark4")[0].name`, "mark4");
|
|
|
|
shouldBeTrue(`list.getEntriesByName("mark3", "not-real").length === 0`);
|
|
shouldBeTrue(`list.getEntriesByName("mark3", "mark").length === 1`);
|
|
shouldBeTrue(`list.getEntriesByName(null, "mark").length === 0`);
|
|
shouldBeTrue(`list.getEntriesByName(undefined, "mark").length === 0`);
|
|
|
|
if (self.importScripts)
|
|
finishJSTest();
|
|
else
|
|
testWorker();
|
|
});
|
|
performance.mark("mark2");
|
|
observer.observe({entryTypes: ["mark"]});
|
|
performance.mark("mark3");
|
|
performance.mark("mark4");
|