aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/console.rs19
-rw-r--r--components/script/dom/globalscope.rs15
-rw-r--r--components/script/dom/webidls/Console.webidl5
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");
};