mirror of
https://github.com/denoland/deno.git
synced 2024-12-23 15:49:44 -05:00
fix(runtime/js): use DOMException in Performance#measure (#9142)
This commit is contained in:
parent
2ca637962f
commit
ad60e750d7
2 changed files with 22 additions and 17 deletions
|
@ -164,16 +164,7 @@
|
|||
"mark-errors",
|
||||
"mark-measure-return-objects",
|
||||
"mark.any",
|
||||
{
|
||||
"name": "measure_syntax_err",
|
||||
"expectFail": [
|
||||
// TODO(lucacasonato): re-enable when #9009 is fixed.
|
||||
"self.performance.measure(\"measure\", \"mark\"), where \"mark\" is a non-existent mark, throws a SyntaxError exception.",
|
||||
"self.performance.measure(\"measure\", \"mark\", \"existing_mark\"), where \"mark\" is a non-existent mark, throws a SyntaxError exception.",
|
||||
"self.performance.measure(\"measure\", \"existing_mark\", \"mark\"), where \"mark\" is a non-existent mark, throws a SyntaxError exception.",
|
||||
"self.performance.measure(\"measure\", \"mark\", \"mark\"), where \"mark\" is a non-existent mark, throws a SyntaxError exception."
|
||||
]
|
||||
},
|
||||
"measure_syntax_err",
|
||||
"measure-l3",
|
||||
"structured-serialize-detail",
|
||||
"user_timing_exists"
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
((window) => {
|
||||
const { opNow } = window.__bootstrap.timers;
|
||||
const { cloneValue, illegalConstructorKey } = window.__bootstrap.webUtil;
|
||||
const { requiredArguments } = window.__bootstrap.webUtil;
|
||||
|
||||
const customInspect = Symbol.for("Deno.customInspect");
|
||||
let performanceEntries = [];
|
||||
|
@ -21,7 +22,10 @@
|
|||
if (typeof mark === "string") {
|
||||
const entry = findMostRecent(mark, "mark");
|
||||
if (!entry) {
|
||||
throw new SyntaxError(`Cannot find mark: "${mark}".`);
|
||||
throw new DOMException(
|
||||
`Cannot find mark: "${mark}".`,
|
||||
"SyntaxError",
|
||||
);
|
||||
}
|
||||
return entry.startTime;
|
||||
}
|
||||
|
@ -42,9 +46,7 @@
|
|||
);
|
||||
}
|
||||
|
||||
function now() {
|
||||
return opNow();
|
||||
}
|
||||
const now = opNow;
|
||||
|
||||
class PerformanceEntry {
|
||||
#name = "";
|
||||
|
@ -115,10 +117,22 @@
|
|||
name,
|
||||
options = {},
|
||||
) {
|
||||
if (typeof options !== "object") {
|
||||
throw new TypeError("Invalid options");
|
||||
requiredArguments("PerformanceMark", arguments.length, 1);
|
||||
|
||||
// ensure options is object-ish, or null-ish
|
||||
switch (typeof options) {
|
||||
case "object": // includes null
|
||||
case "function":
|
||||
case "undefined": {
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
throw new TypeError("Invalid options");
|
||||
}
|
||||
}
|
||||
const { detail = null, startTime = now() } = options;
|
||||
|
||||
const { detail = null, startTime = now() } = options ?? {};
|
||||
|
||||
super(name, "mark", startTime, 0, illegalConstructorKey);
|
||||
if (startTime < 0) {
|
||||
throw new TypeError("startTime cannot be negative");
|
||||
|
|
Loading…
Reference in a new issue