aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Shaughnessy <pshaughn@comcast.net>2020-01-06 14:20:51 -0500
committerPatrick Shaughnessy <pshaughn@comcast.net>2020-01-10 12:32:08 -0500
commit111ede9c77a41ab353f12683a62cd4b4dabb65da (patch)
tree5b144e41939bedff601c8755dd67b78e0c78fac5
parent1d645f37418719a3f965f5729543c97c2d057d01 (diff)
downloadservo-111ede9c77a41ab353f12683a62cd4b4dabb65da.tar.gz
servo-111ede9c77a41ab353f12683a62cd4b4dabb65da.zip
Make property descriptors hold named/indexed property values
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py8
-rw-r--r--components/script/dom/webidls/HTMLFormElement.webidl2
-rw-r--r--components/script/dom/webidls/Window.webidl2
-rw-r--r--components/script/dom/windowproxy.rs3
-rw-r--r--tests/wpt/metadata/WebIDL/ecmascript-binding/legacy-platform-object.html.ini9
-rw-r--r--tests/wpt/metadata/dom/collections/HTMLCollection-supported-property-indices.html.ini3
-rw-r--r--tests/wpt/metadata/html/dom/elements/global-attributes/dataset-binding.window.js.ini6
-rw-r--r--tests/wpt/metadata/html/semantics/forms/the-form-element/form-nameditem.html.ini3
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