1// META: script=performanceobservers.js 2 3 async_test(function (t) { 4 var stored_entries = []; 5 var stored_entries_by_type = []; 6 var observer = new PerformanceObserver( 7 t.step_func(function (entryList, obs) { 8 9 stored_entries = entryList.getEntries(); 10 stored_entries_by_type = entryList.getEntriesByType("mark"); 11 stored_entries_by_name = entryList.getEntriesByName("name-repeat"); 12 var startTimeOfMark2 = entryList.getEntriesByName("mark2")[0].startTime; 13 14 checkSorted(stored_entries); 15 checkEntries(stored_entries, [ 16 {entryType: "measure", name: "measure1"}, 17 {entryType: "measure", name: "measure2"}, 18 {entryType: "measure", name: "measure3"}, 19 {entryType: "measure", name: "name-repeat"}, 20 {entryType: "mark", name: "mark1"}, 21 {entryType: "mark", name: "mark2"}, 22 {entryType: "measure", name: "measure-matching-mark2-1"}, 23 {entryType: "measure", name: "measure-matching-mark2-2"}, 24 {entryType: "mark", name: "name-repeat"}, 25 {entryType: "mark", name: "name-repeat"}, 26 ]); 27 28 checkSorted(stored_entries_by_type); 29 checkEntries(stored_entries_by_type, [ 30 {entryType: "mark", name: "mark1"}, 31 {entryType: "mark", name: "mark2"}, 32 {entryType: "mark", name: "name-repeat"}, 33 {entryType: "mark", name: "name-repeat"}, 34 ]); 35 36 checkSorted(stored_entries_by_name); 37 checkEntries(stored_entries_by_name, [ 38 {entryType: "measure", name: "name-repeat"}, 39 {entryType: "mark", name: "name-repeat"}, 40 {entryType: "mark", name: "name-repeat"}, 41 ]); 42 43 observer.disconnect(); 44 t.done(); 45 }) 46 ); 47 48 observer.observe({entryTypes: ["mark", "measure"]}); 49 50 self.performance.mark("mark1"); 51 self.performance.measure("measure1"); 52 wait(); // Ensure mark1 !== mark2 startTime by making sure performance.now advances. 53 self.performance.mark("mark2"); 54 self.performance.measure("measure2"); 55 self.performance.measure("measure-matching-mark2-1", "mark2"); 56 wait(); // Ensure mark2 !== mark3 startTime by making sure performance.now advances. 57 self.performance.mark("name-repeat"); 58 self.performance.measure("measure3"); 59 self.performance.measure("measure-matching-mark2-2", "mark2"); 60 wait(); // Ensure name-repeat startTime will differ. 61 self.performance.mark("name-repeat"); 62 wait(); // Ensure name-repeat startTime will differ. 63 self.performance.measure("name-repeat"); 64 }, "getEntries, getEntriesByType, getEntriesByName sort order"); 65