function run_test(isolated) { let resolution = 100; if (isolated) { resolution = 5; } test(function() { function check_resolutions(times, length) { const end = length - 2; // we compare each value with the following ones for (let i = 0; i < end; i++) { const h1 = times[i]; for (let j = i+1; j < end; j++) { const h2 = times[j]; const diff = h2 - h1; assert_true((diff === 0) || ((diff * 1000) >= resolution), "Differences smaller than ' + resolution + ' microseconds: " + diff); } } return true; } const times = new Array(10); let index = 0; let hrt1, hrt2, hrt; assert_equals(self.crossOriginIsolated, isolated, "Document cross-origin isolated value matches"); // rapid firing of performance.now hrt1 = performance.now(); hrt2 = performance.now(); times[index++] = hrt1; times[index++] = hrt2; // ensure that we get performance.now() to return a different value do { hrt = performance.now(); times[index++] = hrt; } while ((hrt - hrt1) === 0); assert_true(check_resolutions(times, index), 'Difference should be at least ' + resolution + ' microseconds.'); }, 'The recommended minimum resolution of the Performance interface has been set to ' + resolution + ' microseconds for cross-origin isolated contexts.'); }