// META: script=performanceobservers.js async_test(function (t) { var stored_entries = []; var stored_entries_by_type = []; var observer = new PerformanceObserver( t.step_func(function (entryList, obs) { stored_entries = entryList.getEntries(); stored_entries_by_type = entryList.getEntriesByType("mark"); stored_entries_by_name = entryList.getEntriesByName("name-repeat"); var startTimeOfMark2 = entryList.getEntriesByName("mark2")[0].startTime; checkSorted(stored_entries); checkEntries(stored_entries, [ {entryType: "measure", name: "measure1"}, {entryType: "measure", name: "measure2"}, {entryType: "measure", name: "measure3"}, {entryType: "measure", name: "name-repeat"}, {entryType: "mark", name: "mark1"}, {entryType: "mark", name: "mark2"}, {entryType: "measure", name: "measure-matching-mark2-1"}, {entryType: "measure", name: "measure-matching-mark2-2"}, {entryType: "mark", name: "name-repeat"}, {entryType: "mark", name: "name-repeat"}, ]); checkSorted(stored_entries_by_type); checkEntries(stored_entries_by_type, [ {entryType: "mark", name: "mark1"}, {entryType: "mark", name: "mark2"}, {entryType: "mark", name: "name-repeat"}, {entryType: "mark", name: "name-repeat"}, ]); checkSorted(stored_entries_by_name); checkEntries(stored_entries_by_name, [ {entryType: "measure", name: "name-repeat"}, {entryType: "mark", name: "name-repeat"}, {entryType: "mark", name: "name-repeat"}, ]); observer.disconnect(); t.done(); }) ); observer.observe({entryTypes: ["mark", "measure"]}); self.performance.mark("mark1"); self.performance.measure("measure1"); wait(); // Ensure mark1 !== mark2 startTime by making sure performance.now advances. self.performance.mark("mark2"); self.performance.measure("measure2"); self.performance.measure("measure-matching-mark2-1", "mark2"); wait(); // Ensure mark2 !== mark3 startTime by making sure performance.now advances. self.performance.mark("name-repeat"); self.performance.measure("measure3"); self.performance.measure("measure-matching-mark2-2", "mark2"); wait(); // Ensure name-repeat startTime will differ. self.performance.mark("name-repeat"); wait(); // Ensure name-repeat startTime will differ. self.performance.measure("name-repeat"); }, "getEntries, getEntriesByType, getEntriesByName sort order");