mirror of
https://github.com/lexmount/moli.git
synced 2026-10-08 00:01:00 +00:00
fix(time): use default DOM clock resolution
This commit is contained in:
@@ -6742,7 +6742,9 @@ fn worker_performance_now_callback<'s>(
|
|||||||
rv.set(
|
rv.set(
|
||||||
v8::Number::new(
|
v8::Number::new(
|
||||||
scope,
|
scope,
|
||||||
(monotonic_unix_epoch_millis() - time_origin).max(0.0),
|
moli_time::coarsened_dom_time_millis(
|
||||||
|
(monotonic_unix_epoch_millis() - time_origin).max(0.0),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -52,8 +52,11 @@ pub fn monotonic_timestamp_micros() -> u64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn coarsened_dom_time_millis(millis: f64) -> f64 {
|
pub fn coarsened_dom_time_millis(millis: f64) -> f64 {
|
||||||
const FIVE_MICROSECONDS_PER_MILLISECOND: f64 = 200.0;
|
// High Resolution Time requires the default, non-isolated clock to expose
|
||||||
(millis * FIVE_MICROSECONDS_PER_MILLISECOND).floor() / FIVE_MICROSECONDS_PER_MILLISECOND
|
// no finer than 100 microseconds. Keep the shared clock on that safe
|
||||||
|
// default; cross-origin-isolated realms may opt into a finer clock later.
|
||||||
|
const TEN_TICKS_PER_MILLISECOND: f64 = 10.0;
|
||||||
|
(millis * TEN_TICKS_PER_MILLISECOND).floor() / TEN_TICKS_PER_MILLISECOND
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn dom_time_since_origin_millis(time_origin: f64) -> f64 {
|
pub fn dom_time_since_origin_millis(time_origin: f64) -> f64 {
|
||||||
@@ -241,9 +244,10 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn dom_time_coarsening_uses_five_microsecond_resolution() {
|
fn dom_time_coarsening_uses_default_hundred_microsecond_resolution() {
|
||||||
assert_eq!(coarsened_dom_time_millis(1.234_567), 1.23);
|
assert_eq!(coarsened_dom_time_millis(1.234_567), 1.2);
|
||||||
assert_eq!(coarsened_dom_time_millis(1.239_999), 1.235);
|
assert_eq!(coarsened_dom_time_millis(1.299_999), 1.2);
|
||||||
|
assert_eq!(coarsened_dom_time_millis(1.3), 1.3);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
dom_time_since_origin_millis(unix_epoch_millis() + 1000.0),
|
dom_time_since_origin_millis(unix_epoch_millis() + 1000.0),
|
||||||
0.0
|
0.0
|
||||||
|
|||||||
Reference in New Issue
Block a user