diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index a6e4fcd6ebc..883b7448d61 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -2526,9 +2526,9 @@ class CGGenericGetter(CGAbstractBindingMethod): if lenientThis: name = "genericLenientGetter" unwrapFailureCode = ( - "MOZ_ASSERT(!JS_IsExceptionPending(cx));\n" - "JS_SET_RVAL(cx, vp, JS::UndefinedValue());\n" - "return true;") + "assert!(JS_IsExceptionPending(cx) == 0);\n" + "*vp = UndefinedValue();\n" + "return 1;") else: name = "genericGetter" unwrapFailureCode = None @@ -2600,8 +2600,8 @@ class CGGenericSetter(CGAbstractBindingMethod): if lenientThis: name = "genericLenientSetter" unwrapFailureCode = ( - "MOZ_ASSERT(!JS_IsExceptionPending(cx));\n" - "return true;") + "assert!(JS_IsExceptionPending(cx) == 0);\n" + "return 1;") else: name = "genericSetter" unwrapFailureCode = None @@ -4136,11 +4136,11 @@ class CGDescriptor(CGThing): if hasGetter: cgThings.append(CGGenericGetter(descriptor)) if hasLenientGetter: - pass + cgThings.append(CGGenericGetter(descriptor, lenientThis=True)) if hasSetter: cgThings.append(CGGenericSetter(descriptor)) if hasLenientSetter: - pass + cgThings.append(CGGenericSetter(descriptor, lenientThis=True)) if descriptor.concrete: cgThings.append(CGClassFinalizeHook(descriptor)) diff --git a/components/script/dom/webidls/Document.webidl b/components/script/dom/webidls/Document.webidl index 9ca633a8ba4..111a37b9531 100644 --- a/components/script/dom/webidls/Document.webidl +++ b/components/script/dom/webidls/Document.webidl @@ -79,6 +79,6 @@ partial interface Document { NodeList getElementsByName(DOMString elementName); // special event handler IDL attributes that only apply to Document objects - /*[LenientThis]*/ attribute EventHandler onreadystatechange; + [LenientThis] attribute EventHandler onreadystatechange; }; Document implements GlobalEventHandlers; diff --git a/tests/content/test_lenient_this.html b/tests/content/test_lenient_this.html new file mode 100644 index 00000000000..b31bc0b0751 --- /dev/null +++ b/tests/content/test_lenient_this.html @@ -0,0 +1,28 @@ + +
+ + + + diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 5c69240bf80..8dd98ed292a 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -234,6 +234,9 @@ [Document interface: attribute onratechange] expected: FAIL + [Document interface: attribute onreadystatechange] + expected: FAIL + [Document interface: attribute onreset] expected: FAIL