diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/console.rs | 19 | ||||
-rw-r--r-- | components/script/dom/globalscope.rs | 15 | ||||
-rw-r--r-- | components/script/dom/webidls/Console.webidl | 5 |
3 files changed, 33 insertions, 6 deletions
diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs index 13bbe1005a2..6c6dedc9890 100644 --- a/components/script/dom/console.rs +++ b/components/script/dom/console.rs @@ -271,18 +271,29 @@ impl Console { }; } - // https://developer.mozilla.org/en-US/docs/Web/API/Console/time + // https://console.spec.whatwg.org/#time pub fn Time(global: &GlobalScope, label: DOMString) { if let Ok(()) = global.time(label.clone()) { - let message = DOMString::from(format!("{}: timer started", label)); + let message = DOMString::from(format!("{label}: timer started")); console_message(global, message, LogLevel::Log); } } - // https://developer.mozilla.org/en-US/docs/Web/API/Console/timeEnd + // https://console.spec.whatwg.org/#timelog + pub fn TimeLog(_cx: JSContext, global: &GlobalScope, label: DOMString, data: Vec<HandleValue>) { + if let Ok(delta) = global.time_log(&label) { + let message = DOMString::from(format!( + "{label}: {delta}ms {}", + stringify_handle_values(data) + )); + console_message(global, message, LogLevel::Log); + } + } + + // https://console.spec.whatwg.org/#timeend pub fn TimeEnd(global: &GlobalScope, label: DOMString) { if let Ok(delta) = global.time_end(&label) { - let message = DOMString::from(format!("{}: {}ms", label, delta)); + let message = DOMString::from(format!("{label}: {delta}ms")); console_message(global, message, LogLevel::Log); } } diff --git a/components/script/dom/globalscope.rs b/components/script/dom/globalscope.rs index 2caf00da4cf..a14a750015c 100644 --- a/components/script/dom/globalscope.rs +++ b/components/script/dom/globalscope.rs @@ -2285,6 +2285,21 @@ impl GlobalScope { } } + /// Computes the delta time since a label has been created + /// + /// Returns an error if the label does not exist. + pub fn time_log(&self, label: &str) -> Result<u64, ()> { + self.console_timers + .borrow() + .get(label) + .ok_or(()) + .map(|&start| (Instant::now() - start).as_millis() as u64) + } + + /// Computes the delta time since a label has been created and stops + /// tracking the label. + /// + /// Returns an error if the label does not exist. pub fn time_end(&self, label: &str) -> Result<u64, ()> { self.console_timers .borrow_mut() diff --git a/components/script/dom/webidls/Console.webidl b/components/script/dom/webidls/Console.webidl index fe0435476cb..b6d2d91fd14 100644 --- a/components/script/dom/webidls/Console.webidl +++ b/components/script/dom/webidls/Console.webidl @@ -26,6 +26,7 @@ namespace console { undefined groupEnd(); // Timing - undefined time(DOMString message); - undefined timeEnd(DOMString message); + undefined time(optional DOMString label = "default"); + undefined timeLog(optional DOMString label = "default", any... data); + undefined timeEnd(optional DOMString label = "default"); }; |