summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extensions/web/01_dom_exception.js17
-rw-r--r--tools/wpt/expectation.json25
2 files changed, 35 insertions, 7 deletions
diff --git a/extensions/web/01_dom_exception.js b/extensions/web/01_dom_exception.js
index 6c3c95f38..90ddb267b 100644
--- a/extensions/web/01_dom_exception.js
+++ b/extensions/web/01_dom_exception.js
@@ -10,8 +10,12 @@
"use strict";
((window) => {
- const { ObjectDefineProperty, ObjectEntries } =
- window.__bootstrap.primordials;
+ const {
+ Error,
+ ObjectDefineProperty,
+ ObjectEntries,
+ ObjectSetPrototypeOf,
+ } = window.__bootstrap.primordials;
const webidl = window.__bootstrap.webidl;
// Defined in WebIDL 4.3.
@@ -72,13 +76,12 @@
// Defined in WebIDL 4.3.
// https://heycam.github.io/webidl/#idl-DOMException
- class DOMException extends Error {
+ class DOMException {
#message = "";
#name = "";
#code = 0;
constructor(message = "", name = "Error") {
- super();
this.#message = webidl.converters.DOMString(message, {
prefix: "Failed to construct 'DOMException'",
context: "Argument 1",
@@ -105,8 +108,14 @@
get [Symbol.toStringTag]() {
return "DOMException";
}
+
+ [Symbol.for("Deno.customInspect")]() {
+ return `DOMException: ${this.#message}`;
+ }
}
+ ObjectSetPrototypeOf(DOMException.prototype, Error.prototype);
+
webidl.configurePrototype(DOMException);
for (
diff --git a/tools/wpt/expectation.json b/tools/wpt/expectation.json
index 847eb110c..70876c164 100644
--- a/tools/wpt/expectation.json
+++ b/tools/wpt/expectation.json
@@ -629,10 +629,29 @@
"DOMException-constructor-and-prototype.any.html": true,
"DOMException-constructor-behavior.any.html": true,
"DOMException-custom-bindings.any.html": [
- "does not inherit from Error: class-side"
+ "If the implementation has a stack property on normal errors, it also does on DOMExceptions"
]
- }
- }
+ },
+ "class-string-interface.any.html": [
+ "@@toStringTag exists on the prototype with the appropriate descriptor"
+ ],
+ "class-string-iterator-prototype-object.any.html": true,
+ "global-immutable-prototype.any.html": [
+ "Setting to a different prototype"
+ ],
+ "global-object-implicit-this-value.any.html": [
+ "Global object's getter throws when called on incompatible object",
+ "Global object's setter throws when called on incompatible object",
+ "Global object's operation throws when called on incompatible object",
+ "Global object's getter works when called on null / undefined",
+ "Global object's setter works when called on null / undefined"
+ ],
+ "legacy-factor-function-subclass.window.html": false,
+ "no-regexp-special-casing.any.html": [
+ "Conversion to a sequence works"
+ ]
+ },
+ "idlharness.any.html": true
},
"url": {
"historical.any.html": [