// Compares a performance entry to a predefined one // perfEntriesToCheck is an array of performance entries from the user agent // expectedEntries is an array of performance entries minted by the test function checkEntries(perfEntriesToCheck, expectedEntries) { function findMatch(pe) { // we match based on entryType and name for (var i = expectedEntries.length - 1; i >= 0; i--) { var ex = expectedEntries[i]; if (ex.entryType === pe.entryType && ex.name === pe.name) { return ex; } } return null; } assert_equals(perfEntriesToCheck.length, expectedEntries.length, "performance entries must match"); perfEntriesToCheck.forEach(function (pe1) { assert_not_equals(findMatch(pe1), null, "Entry matches"); }); } // Waits for performance.now to advance. Since precision reduction might // cause it to return the same value across multiple calls. function wait() { var now = performance.now(); while (now === performance.now()) continue; } // Ensure the entries list is sorted by startTime. function checkSorted(entries) { assert_not_equals(entries.length, 0, "entries list must not be empty"); if (!entries.length) return; var sorted = false; var lastStartTime = entries[0].startTime; for (var i = 1; i < entries.length; ++i) { var currStartTime = entries[i].startTime; assert_less_than_equal(lastStartTime, currStartTime, "entry list must be sorted by startTime"); lastStartTime = currStartTime; } }