mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-26 01:35:08 +02:00
Many clock related functions in Ladybird use the clock type called CLOCK_MONOTONIC_COARSE to obtain timestamps. This is a less precise clock and can be skewed by 1 or more milliseconds. This less precise clock timing is causing the abortsignal-timeout.html test to fail randomly as it expects the abort signal to arrive after 10ms, but in some cases it arrives at 9ms causing the test to fail. In some very rare cases it could even arrive in 7ms or 8ms. Test is changed to accept 9ms as a good result and if that is still not enough the test also will display the timings so that further investigations can be made.
24 lines
1.1 KiB
HTML
24 lines
1.1 KiB
HTML
<!DOCTYPE html>
|
|
<script src="include.js"></script>
|
|
<script>
|
|
asyncTest(done => {
|
|
const timeout_milliseconds = 10;
|
|
const test_start_time = performance.now();
|
|
const signal = AbortSignal.timeout(timeout_milliseconds);
|
|
signal.onabort = (event) => {
|
|
const abort_event_time = performance.now();
|
|
const time_taken_milliseconds = (abort_event_time - test_start_time) + 1; // Add 1ms for possible coarse clock skew
|
|
println(`Time passed before abort event fired is at least ${timeout_milliseconds} milliseconds: ${time_taken_milliseconds >= timeout_milliseconds}`);
|
|
println(`Reason type: ${signal.reason.name}`);
|
|
println(`onabort event isTrusted: ${event.isTrusted}`);
|
|
if (time_taken_milliseconds < timeout_milliseconds) {
|
|
println(`start time: ${test_start_time}`);
|
|
println(`abort time: ${abort_event_time}`);
|
|
println(`difference (coarse adjusted): ${time_taken_milliseconds}`);
|
|
println(`difference (actual): ${time_taken_milliseconds - 1}`);
|
|
}
|
|
done();
|
|
};
|
|
});
|
|
</script>
|