mirror of
https://github.com/denoland/deno.git
synced 2024-12-24 16:19:12 -05:00
feat(web): add performance.timeOrigin
(#14489)
Add support for the `performance.timeOrigin` web API. Co-authored-by: Jovi De Croock <decroockjovi@gmail.com>
This commit is contained in:
parent
23c77df664
commit
dd1d6a0f67
5 changed files with 22 additions and 3 deletions
1
cli/dts/lib.deno.shared_globals.d.ts
vendored
1
cli/dts/lib.deno.shared_globals.d.ts
vendored
|
@ -450,6 +450,7 @@ declare class Worker extends EventTarget {
|
|||
declare type PerformanceEntryList = PerformanceEntry[];
|
||||
|
||||
declare class Performance {
|
||||
readonly timeOrigin: number;
|
||||
constructor();
|
||||
|
||||
/** Removes the stored timestamp with the associated name. */
|
||||
|
|
|
@ -20,6 +20,13 @@ Deno.test({ permissions: { hrtime: false } }, async function performanceNow() {
|
|||
assert(totalTime >= 10);
|
||||
});
|
||||
|
||||
Deno.test(function timeOrigin() {
|
||||
const origin = performance.timeOrigin;
|
||||
|
||||
assert(origin > 0);
|
||||
assert(Date.now() >= origin);
|
||||
});
|
||||
|
||||
Deno.test(function performanceMark() {
|
||||
const mark = performance.mark("test");
|
||||
assert(mark instanceof PerformanceMark);
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
const illegalConstructorKey = Symbol("illegalConstructorKey");
|
||||
const customInspect = SymbolFor("Deno.customInspect");
|
||||
let performanceEntries = [];
|
||||
let timeOrigin;
|
||||
|
||||
webidl.converters["PerformanceMarkOptions"] = webidl
|
||||
.createDictionaryConverter(
|
||||
|
@ -77,6 +78,10 @@
|
|||
return webidl.converters.DOMString(V, opts);
|
||||
};
|
||||
|
||||
function setTimeOrigin(origin) {
|
||||
timeOrigin = origin;
|
||||
}
|
||||
|
||||
function findMostRecent(
|
||||
name,
|
||||
type,
|
||||
|
@ -327,6 +332,10 @@
|
|||
webidl.illegalConstructor();
|
||||
}
|
||||
|
||||
get timeOrigin() {
|
||||
return timeOrigin;
|
||||
}
|
||||
|
||||
clearMarks(markName = undefined) {
|
||||
webidl.assertBranded(this, PerformancePrototype);
|
||||
if (markName !== undefined) {
|
||||
|
@ -566,5 +575,6 @@
|
|||
PerformanceMeasure,
|
||||
Performance,
|
||||
performance: webidl.createBranded(Performance),
|
||||
setTimeOrigin,
|
||||
};
|
||||
})(this);
|
||||
|
|
|
@ -9,6 +9,7 @@ delete Object.prototype.__proto__;
|
|||
const core = Deno.core;
|
||||
const {
|
||||
ArrayPrototypeMap,
|
||||
DateNow,
|
||||
Error,
|
||||
FunctionPrototypeCall,
|
||||
FunctionPrototypeBind,
|
||||
|
@ -530,6 +531,7 @@ delete Object.prototype.__proto__;
|
|||
throw new Error("Worker runtime already bootstrapped");
|
||||
}
|
||||
|
||||
performance.setTimeOrigin(DateNow());
|
||||
const consoleFromV8 = window.console;
|
||||
const wrapConsole = window.__bootstrap.console.wrapConsole;
|
||||
|
||||
|
@ -622,6 +624,7 @@ delete Object.prototype.__proto__;
|
|||
throw new Error("Worker runtime already bootstrapped");
|
||||
}
|
||||
|
||||
performance.setTimeOrigin(DateNow());
|
||||
const consoleFromV8 = window.console;
|
||||
const wrapConsole = window.__bootstrap.console.wrapConsole;
|
||||
|
||||
|
|
|
@ -1179,7 +1179,6 @@
|
|||
"Performance interface: existence and properties of interface object",
|
||||
"Performance interface: existence and properties of interface prototype object",
|
||||
"Performance interface: attribute timeOrigin",
|
||||
"Performance interface: performance must inherit property \"timeOrigin\" with the proper type",
|
||||
"Performance interface: default toJSON operation on performance",
|
||||
"Window interface: attribute performance"
|
||||
],
|
||||
|
@ -1187,12 +1186,11 @@
|
|||
"Performance interface: existence and properties of interface object",
|
||||
"Performance interface: existence and properties of interface prototype object",
|
||||
"Performance interface: attribute timeOrigin",
|
||||
"Performance interface: performance must inherit property \"timeOrigin\" with the proper type",
|
||||
"Performance interface: default toJSON operation on performance",
|
||||
"WorkerGlobalScope interface: attribute performance",
|
||||
"WorkerGlobalScope interface: self must inherit property \"performance\" with the proper type"
|
||||
],
|
||||
"window-worker-timeOrigin.window.html": false,
|
||||
"window-worker-timeOrigin.window.html": true,
|
||||
"idlharness-shadowrealm.window.html": false
|
||||
},
|
||||
"streams": {
|
||||
|
|
Loading…
Reference in a new issue