aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/htmlbuttonelement.rs10
-rw-r--r--components/script/dom/htmlimageelement.rs15
-rw-r--r--components/script/dom/htmloptionelement.rs4
-rw-r--r--components/script/dom/htmltablecellelement.rs2
-rw-r--r--tests/wpt/metadata/html/dom/reflection-embedded.html.ini102
-rw-r--r--tests/wpt/metadata/html/dom/reflection-obsolete.html.ini72
-rw-r--r--tests/wpt/metadata/html/dom/reflection-tabular.html.ini48
-rw-r--r--tests/wpt/metadata/html/semantics/forms/the-select-element/select-ask-for-reset.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/html/dom/reflection.js27
9 files changed, 214 insertions, 67 deletions
diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs
index 5146c7e4888..7d73a2ad64f 100644
--- a/components/script/dom/htmlbuttonelement.rs
+++ b/components/script/dom/htmlbuttonelement.rs
@@ -81,15 +81,7 @@ impl HTMLButtonElementMethods for HTMLButtonElement {
}
// https://html.spec.whatwg.org/multipage/#dom-button-type
- fn Type(&self) -> DOMString {
- let mut ty = self.upcast::<Element>().get_string_attribute(&atom!("type"));
- ty.make_ascii_lowercase();
- // https://html.spec.whatwg.org/multipage/#attr-button-type
- match &*ty {
- "reset" | "button" | "menu" => ty,
- _ => "submit".to_owned()
- }
- }
+ make_enumerated_getter!(Type, "submit", ("reset") | ("button") | ("menu"));
// https://html.spec.whatwg.org/multipage/#dom-button-type
make_setter!(SetType, "type");
diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs
index 25b93621c02..e3b2fd85111 100644
--- a/components/script/dom/htmlimageelement.rs
+++ b/components/script/dom/htmlimageelement.rs
@@ -14,7 +14,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::{LayoutJS, Root};
use dom::bindings::refcounted::Trusted;
use dom::document::Document;
-use dom::element::{AttributeMutation, Element};
+use dom::element::AttributeMutation;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::htmlelement::HTMLElement;
use dom::node::{Node, NodeDamage, document_from_node, window_from_node};
@@ -196,11 +196,8 @@ impl HTMLImageElementMethods for HTMLImageElement {
// https://html.spec.whatwg.org/multipage/#dom-img-ismap
make_bool_getter!(IsMap);
-
// https://html.spec.whatwg.org/multipage/#dom-img-ismap
- fn SetIsMap(&self, is_map: bool) {
- self.upcast::<Element>().set_string_attribute(&atom!("ismap"), is_map.to_string())
- }
+ make_bool_setter!(SetIsMap, "ismap");
// https://html.spec.whatwg.org/multipage/#dom-img-width
fn Width(&self) -> u32 {
@@ -210,9 +207,7 @@ impl HTMLImageElementMethods for HTMLImageElement {
}
// https://html.spec.whatwg.org/multipage/#dom-img-width
- fn SetWidth(&self, width: u32) {
- self.upcast::<Element>().set_uint_attribute(&atom!("width"), width)
- }
+ make_uint_setter!(SetWidth, "width");
// https://html.spec.whatwg.org/multipage/#dom-img-height
fn Height(&self) -> u32 {
@@ -222,9 +217,7 @@ impl HTMLImageElementMethods for HTMLImageElement {
}
// https://html.spec.whatwg.org/multipage/#dom-img-height
- fn SetHeight(&self, height: u32) {
- self.upcast::<Element>().set_uint_attribute(&atom!("height"), height)
- }
+ make_uint_setter!(SetHeight, "height");
// https://html.spec.whatwg.org/multipage/#dom-img-naturalwidth
fn NaturalWidth(&self) -> u32 {
diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs
index 8c7dea8ac1e..03ea7aabf84 100644
--- a/components/script/dom/htmloptionelement.rs
+++ b/components/script/dom/htmloptionelement.rs
@@ -91,9 +91,7 @@ impl HTMLOptionElementMethods for HTMLOptionElement {
make_bool_getter!(Disabled);
// https://html.spec.whatwg.org/multipage/#dom-option-disabled
- fn SetDisabled(&self, disabled: bool) {
- self.upcast::<Element>().set_bool_attribute(&atom!("disabled"), disabled)
- }
+ make_bool_setter!(SetDisabled, "disabled");
// https://html.spec.whatwg.org/multipage/#dom-option-text
fn Text(&self) -> DOMString {
diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs
index 3f1b13633f2..afb1cebdb3d 100644
--- a/components/script/dom/htmltablecellelement.rs
+++ b/components/script/dom/htmltablecellelement.rs
@@ -53,7 +53,7 @@ impl HTMLTableCellElementMethods for HTMLTableCellElement {
make_uint_getter!(ColSpan, "colspan", DEFAULT_COLSPAN);
// https://html.spec.whatwg.org/multipage/#dom-tdth-colspan
- make_uint_setter!(SetColSpan, "colspan");
+ make_uint_setter!(SetColSpan, "colspan", DEFAULT_COLSPAN);
// https://html.spec.whatwg.org/multipage/#dom-tdth-cellindex
fn CellIndex(&self) -> i32 {
diff --git a/tests/wpt/metadata/html/dom/reflection-embedded.html.ini b/tests/wpt/metadata/html/dom/reflection-embedded.html.ini
index 1b4b1e10f3c..82044b1a910 100644
--- a/tests/wpt/metadata/html/dom/reflection-embedded.html.ini
+++ b/tests/wpt/metadata/html/dom/reflection-embedded.html.ini
@@ -912,36 +912,6 @@
[img.crossOrigin: IDL set to "USE-CREDENTIALS" followed by IDL get]
expected: FAIL
- [img.isMap: IDL set to "" followed by hasAttribute()]
- expected: FAIL
-
- [img.isMap: IDL set to "" followed by IDL get]
- expected: FAIL
-
- [img.isMap: IDL set to undefined followed by hasAttribute()]
- expected: FAIL
-
- [img.isMap: IDL set to undefined followed by IDL get]
- expected: FAIL
-
- [img.isMap: IDL set to null followed by hasAttribute()]
- expected: FAIL
-
- [img.isMap: IDL set to null followed by IDL get]
- expected: FAIL
-
- [img.isMap: IDL set to false followed by hasAttribute()]
- expected: FAIL
-
- [img.isMap: IDL set to false followed by IDL get]
- expected: FAIL
-
- [img.isMap: IDL set to NaN followed by hasAttribute()]
- expected: FAIL
-
- [img.isMap: IDL set to NaN followed by IDL get]
- expected: FAIL
-
[img.width: IDL set to 1 followed by IDL get]
expected: FAIL
@@ -22107,3 +22077,75 @@
[data.itemValue (<data value>): IDL set to object "test-valueOf" followed by IDL get]
expected: FAIL
+ [object.hspace: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [object.hspace: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [object.hspace: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [object.hspace: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [object.vspace: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [object.vspace: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [object.vspace: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [object.vspace: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [video.width: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [video.width: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [video.width: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [video.width: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [video.height: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [video.height: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [video.height: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [video.height: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [canvas.width: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [canvas.width: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [canvas.width: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [canvas.width: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [canvas.height: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [canvas.height: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [canvas.height: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [canvas.height: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/dom/reflection-obsolete.html.ini b/tests/wpt/metadata/html/dom/reflection-obsolete.html.ini
index f81b0e937f2..03d95573fc2 100644
--- a/tests/wpt/metadata/html/dom/reflection-obsolete.html.ini
+++ b/tests/wpt/metadata/html/dom/reflection-obsolete.html.ini
@@ -10869,3 +10869,75 @@
[data.itemValue (<data value>): IDL set to object "test-valueOf" followed by IDL get]
expected: FAIL
+ [applet.hspace: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [applet.hspace: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [applet.hspace: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [applet.hspace: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [applet.vspace: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [applet.vspace: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [applet.vspace: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [applet.vspace: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [marquee.hspace: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [marquee.hspace: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [marquee.hspace: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [marquee.hspace: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [marquee.scrollAmount: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [marquee.scrollAmount: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [marquee.scrollAmount: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [marquee.scrollAmount: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [marquee.scrollDelay: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [marquee.scrollDelay: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [marquee.scrollDelay: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [marquee.scrollDelay: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [marquee.vspace: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [marquee.vspace: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [marquee.vspace: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [marquee.vspace: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/dom/reflection-tabular.html.ini b/tests/wpt/metadata/html/dom/reflection-tabular.html.ini
index 351a0fc5e29..969134a9c08 100644
--- a/tests/wpt/metadata/html/dom/reflection-tabular.html.ini
+++ b/tests/wpt/metadata/html/dom/reflection-tabular.html.ini
@@ -17691,3 +17691,51 @@
[data.itemValue (<data value>): IDL set to object "test-valueOf" followed by IDL get]
expected: FAIL
+ [colgroup.span: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [colgroup.span: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [colgroup.span: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [colgroup.span: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [col.span: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [col.span: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [col.span: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [col.span: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [td.rowSpan: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [td.rowSpan: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [td.rowSpan: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [td.rowSpan: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
+ [th.rowSpan: IDL set to 2147483648 followed by getAttribute()]
+ expected: FAIL
+
+ [th.rowSpan: IDL set to 2147483648 followed by IDL get]
+ expected: FAIL
+
+ [th.rowSpan: IDL set to 4294967295 followed by getAttribute()]
+ expected: FAIL
+
+ [th.rowSpan: IDL set to 4294967295 followed by IDL get]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/forms/the-select-element/select-ask-for-reset.html.ini b/tests/wpt/metadata/html/semantics/forms/the-select-element/select-ask-for-reset.html.ini
index f858a12d101..dd109c994dd 100644
--- a/tests/wpt/metadata/html/semantics/forms/the-select-element/select-ask-for-reset.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/the-select-element/select-ask-for-reset.html.ini
@@ -2,3 +2,4 @@
type: testharness
[ask for reset on node remove, non multiple.]
expected: FAIL
+
diff --git a/tests/wpt/web-platform-tests/html/dom/reflection.js b/tests/wpt/web-platform-tests/html/dom/reflection.js
index 7bd41d51622..35099c1d5da 100644
--- a/tests/wpt/web-platform-tests/html/dom/reflection.js
+++ b/tests/wpt/web-platform-tests/html/dom/reflection.js
@@ -139,10 +139,9 @@ var maxUnsigned = 4294967295;
*
* Note that all tests/expected values are only baselines, and can be expanded
* with additional tests hardcoded into the function for particular types if
- * necessary (e.g., enum). null means "default" as a DOM expected value, and
- * "throw an INDEX_SIZE_ERR exception" as an IDL expected value. (This is a
- * kind of stupid and fragile convention, but it's simple and works for now.)
- * Expected DOM values are cast to strings by adding "".
+ * necessary. For example, a special codepath is used for enums, and for
+ * IDL setters which throw an exception. null means "defaultVal" is the
+ * expected value. Expected DOM values are cast to strings by adding "".
*
* TODO: Test strings that aren't valid UTF-16. Desired behavior is not clear
* here at the time of writing, see
@@ -379,8 +378,8 @@ ReflectionTests.typeMap = {
}
return parsed;
},
- "idlTests": [minInt, -36, -1, 0, 1, maxInt],
- "idlDomExpected": [null, null, null, 0, 1, maxInt]
+ "idlTests": [minInt, -36, -1, 0, 1, maxInt],
+ "idlDomExpected": [null/*exception*/, null/*exception*/, null/*exception*/, 0, 1, maxInt]
},
/**
* "If a reflecting IDL attribute is an unsigned integer type (unsigned
@@ -416,8 +415,9 @@ ReflectionTests.typeMap = {
}
return parsed;
},
- "idlTests": [0, 1, 257, 2147483647, "-0"],
- "idlIdlExpected": [0, 1, 257, 2147483647, 0]
+ "idlTests": [0, 1, 257, maxInt, "-0", maxInt + 1, maxUnsigned],
+ "idlIdlExpected": [0, 1, 257, maxInt, 0, null, null],
+ "idlDomExpected": [0, 1, 257, maxInt, 0, null, null],
},
/**
* "If a reflecting IDL attribute is an unsigned integer type (unsigned
@@ -457,8 +457,8 @@ ReflectionTests.typeMap = {
}
return parsed;
},
- "idlTests": [0, 1, 2147483647],
- "idlDomExpected": [null, 1, 2147483647]
+ "idlTests": [0, 1, maxInt, maxInt + 1, maxUnsigned],
+ "idlDomExpected": [null/*exception*/, 1, maxInt, null, null]
},
/**
* "If a reflecting IDL attribute is a floating point number type (double),
@@ -610,8 +610,8 @@ ReflectionTests.doReflects = function(data, idlName, idlObj, domName, domObj) {
var domTests = typeInfo.domTests.slice(0);
var domExpected = typeInfo.domExpected.map(function(val) { return val === null ? defaultVal : val; });
var idlTests = typeInfo.idlTests.slice(0);
- var idlDomExpected = typeInfo.idlDomExpected.slice(0);
- var idlIdlExpected = typeInfo.idlIdlExpected.slice(0);
+ var idlDomExpected = typeInfo.idlDomExpected.map(function(val) { return val === null ? defaultVal : val; });
+ var idlIdlExpected = typeInfo.idlIdlExpected.map(function(val) { return val === null ? defaultVal : val; });
switch (data.type) {
// Extra tests and other special-casing
case "boolean":
@@ -712,7 +712,8 @@ ReflectionTests.doReflects = function(data, idlName, idlObj, domName, domObj) {
}
for (var i = 0; i < idlTests.length; i++) {
- if (idlDomExpected[i] === null && data.type != "enum") {
+ if ((data.type == "limited long" && idlTests[i] < 0) ||
+ (data.type == "limited unsigned long" && idlTests[i] == 0)) {
ReflectionHarness.testException("INDEX_SIZE_ERR", function() {
idlObj[idlName] = idlTests[i];
}, "IDL set to " + ReflectionHarness.stringRep(idlTests[i]) + " must throw INDEX_SIZE_ERR");