// META: script=resources/user-timing-helper.js function endTime(entry) { return entry.startTime + entry.duration; } test(function() { performance.clearMarks(); performance.clearMeasures(); const markEntry = performance.mark("mark", {startTime: 123}); const measureEntry = performance.measure("A", undefined, "mark"); assert_equals(measureEntry.startTime, 0); assert_equals(endTime(measureEntry), markEntry.startTime); }, "When the end mark is given and the start is unprovided, the end time of the measure entry should be the end mark's time, the start time should be 0."); test(function() { performance.clearMarks(); performance.clearMeasures(); const markEntry = performance.mark("mark", {startTime: 123}); const endMin = performance.now(); const measureEntry = performance.measure("A", "mark", undefined); const endMax = performance.now(); assert_equals(measureEntry.startTime, markEntry.startTime); assert_greater_than_equal(endTime(measureEntry), endMin); assert_greater_than_equal(endMax, endTime(measureEntry)); }, "When the start mark is given and the end is unprovided, the start time of the measure entry should be the start mark's time, the end should be now."); test(function() { performance.clearMarks(); performance.clearMeasures(); const markEntry = performance.mark("mark", {startTime: 123}); const measureEntry = performance.measure("A", "mark", "mark"); assert_equals(endTime(measureEntry), markEntry.startTime); assert_equals(measureEntry.startTime, markEntry.startTime); }, "When start and end mark are both given, the start time and end time of the measure entry should be the the marks' time, repectively");