1// META: script=resources/user-timing-helper.js 2 3async_test(function (t) { 4 let mark_entries = []; 5 const expected_entries = 6 [{ entryType: "mark", name: "mark1", detail: null}, 7 { entryType: "mark", name: "mark2", detail: null}, 8 { entryType: "mark", name: "mark3", detail: null}, 9 { entryType: "mark", name: "mark4", detail: null}, 10 { entryType: "mark", name: "mark5", detail: null}, 11 { entryType: "mark", name: "mark6", detail: {}}, 12 { entryType: "mark", name: "mark7", detail: {info: 'abc'}}, 13 { entryType: "mark", name: "mark8", detail: null, startTime: 234.56}, 14 { entryType: "mark", name: "mark9", detail: {count: 3}, startTime: 345.67}]; 15 const observer = new PerformanceObserver( 16 t.step_func(function (entryList, obs) { 17 mark_entries = 18 mark_entries.concat(entryList.getEntries()); 19 if (mark_entries.length >= expected_entries.length) { 20 checkEntries(mark_entries, expected_entries); 21 observer.disconnect(); 22 t.done(); 23 } 24 }) 25 ); 26 self.performance.clearMarks(); 27 observer.observe({entryTypes: ["mark"]}); 28 const returned_entries = []; 29 returned_entries.push(self.performance.mark("mark1")); 30 returned_entries.push(self.performance.mark("mark2", undefined)); 31 returned_entries.push(self.performance.mark("mark3", null)); 32 returned_entries.push(self.performance.mark("mark4", {})); 33 returned_entries.push(self.performance.mark("mark5", {detail: null})); 34 returned_entries.push(self.performance.mark("mark6", {detail: {}})); 35 returned_entries.push(self.performance.mark("mark7", {detail: {info: 'abc'}})); 36 returned_entries.push(self.performance.mark("mark8", {startTime: 234.56})); 37 returned_entries.push(self.performance.mark("mark9", {detail: {count: 3}, startTime: 345.67})); 38 checkEntries(returned_entries, expected_entries); 39}, "mark entries' detail and startTime are customizable."); 40