diff options
author | Patrick Shaughnessy <pshaughn@comcast.net> | 2020-01-06 14:20:51 -0500 |
---|---|---|
committer | Patrick Shaughnessy <pshaughn@comcast.net> | 2020-01-10 12:32:08 -0500 |
commit | 111ede9c77a41ab353f12683a62cd4b4dabb65da (patch) | |
tree | 5b144e41939bedff601c8755dd67b78e0c78fac5 | |
parent | 1d645f37418719a3f965f5729543c97c2d057d01 (diff) | |
download | servo-111ede9c77a41ab353f12683a62cd4b4dabb65da.tar.gz servo-111ede9c77a41ab353f12683a62cd4b4dabb65da.zip |
Make property descriptors hold named/indexed property values
8 files changed, 6 insertions, 30 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index ec29a59c9d4..9cdda2f3bf2 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -5147,8 +5147,7 @@ class CGDOMJSProxyHandler_getOwnPropertyDescriptor(CGAbstractExternMethod): attrs = "JSPROP_ENUMERATE" if self.descriptor.operations['IndexedSetter'] is None: attrs += " | JSPROP_READONLY" - # FIXME(#11868) Should assign to desc.value, desc.get() is a copy. - fillDescriptor = ("desc.get().value = result_root.get();\n" + fillDescriptor = ("desc.value = result_root.get();\n" "fill_property_descriptor(MutableHandle::from_raw(desc), proxy.get(), (%s) as u32);\n" "return true;" % attrs) templateValues = { @@ -5173,8 +5172,7 @@ class CGDOMJSProxyHandler_getOwnPropertyDescriptor(CGAbstractExternMethod): attrs = " | ".join(attrs) else: attrs = "0" - # FIXME(#11868) Should assign to desc.value, desc.get() is a copy. - fillDescriptor = ("desc.get().value = result_root.get();\n" + fillDescriptor = ("desc.value = result_root.get();\n" "fill_property_descriptor(MutableHandle::from_raw(desc), proxy.get(), (%s) as u32);\n" "return true;" % attrs) templateValues = { @@ -5221,7 +5219,7 @@ if !expando.is_null() { } } """ + namedGet + """\ -desc.get().obj = ptr::null_mut(); +desc.obj = ptr::null_mut(); return true;""" def definition_body(self): diff --git a/components/script/dom/webidls/HTMLFormElement.webidl b/components/script/dom/webidls/HTMLFormElement.webidl index 13ffbf4dfe8..744f6d84ca9 100644 --- a/components/script/dom/webidls/HTMLFormElement.webidl +++ b/components/script/dom/webidls/HTMLFormElement.webidl @@ -3,7 +3,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ // https://html.spec.whatwg.org/multipage/#htmlformelement -[Exposed=Window] +[Exposed=Window, LegacyUnenumerableNamedProperties] interface HTMLFormElement : HTMLElement { [HTMLConstructor] constructor(); diff --git a/components/script/dom/webidls/Window.webidl b/components/script/dom/webidls/Window.webidl index f2cdeeb18a5..afd5183de33 100644 --- a/components/script/dom/webidls/Window.webidl +++ b/components/script/dom/webidls/Window.webidl @@ -3,7 +3,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ // https://html.spec.whatwg.org/multipage/#window -[Global=Window, Exposed=Window] +[Global=Window, Exposed=Window /*, LegacyUnenumerableNamedProperties */] /*sealed*/ interface Window : GlobalScope { // the current browsing context [Unforgeable] readonly attribute WindowProxy window; diff --git a/components/script/dom/windowproxy.rs b/components/script/dom/windowproxy.rs index 7fea1728c12..6aa0b9244cf 100644 --- a/components/script/dom/windowproxy.rs +++ b/components/script/dom/windowproxy.rs @@ -822,8 +822,7 @@ unsafe extern "C" fn getOwnPropertyDescriptor( assert!(desc.obj.is_null() || desc.obj == target.get()); if desc.obj == target.get() { - // FIXME(#11868) Should assign to desc.obj, desc.get() is a copy. - desc.get().obj = proxy.get(); + desc.obj = proxy.get(); } true diff --git a/tests/wpt/metadata/WebIDL/ecmascript-binding/legacy-platform-object.html.ini b/tests/wpt/metadata/WebIDL/ecmascript-binding/legacy-platform-object.html.ini index a2250466733..0ba8ad10aaa 100644 --- a/tests/wpt/metadata/WebIDL/ecmascript-binding/legacy-platform-object.html.ini +++ b/tests/wpt/metadata/WebIDL/ecmascript-binding/legacy-platform-object.html.ini @@ -1,14 +1,5 @@ [legacy-platform-object.html] type: testharness - [[[GetOwnProperty\]\] with getters and no setters] - expected: FAIL - - [[[GetOwnProperty\]\] with named property getters and setters] - expected: FAIL - - [[[GetOwnProperty\]\] with indexed property getters and setters] - expected: FAIL - [Test [[DefineOwnProperty\]\] with no indexed property setter support.] expected: FAIL diff --git a/tests/wpt/metadata/dom/collections/HTMLCollection-supported-property-indices.html.ini b/tests/wpt/metadata/dom/collections/HTMLCollection-supported-property-indices.html.ini index 4bf756bec94..16ea183e3c0 100644 --- a/tests/wpt/metadata/dom/collections/HTMLCollection-supported-property-indices.html.ini +++ b/tests/wpt/metadata/dom/collections/HTMLCollection-supported-property-indices.html.ini @@ -6,6 +6,3 @@ [Trying to set an expando with an indexed property name past the end of the list] expected: FAIL - [Trying to delete an indexed property name should never work] - expected: FAIL - diff --git a/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-binding.window.js.ini b/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-binding.window.js.ini index 19996050bff..1fcfb3b5887 100644 --- a/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-binding.window.js.ini +++ b/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-binding.window.js.ini @@ -5,9 +5,3 @@ [Setting property for key 9 with accessor property on prototype] expected: FAIL - [Getting property descriptor for key 9] - expected: FAIL - - [Getting property descriptor for key x] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/forms/the-form-element/form-nameditem.html.ini b/tests/wpt/metadata/html/semantics/forms/the-form-element/form-nameditem.html.ini index 2a540f30348..80e162af4d6 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-form-element/form-nameditem.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-form-element/form-nameditem.html.ini @@ -1,8 +1,5 @@ [form-nameditem.html] type: testharness - [Name for a single element should work] - expected: FAIL - [All listed elements except input type=image should be present in the form] expected: FAIL |