aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Kolupaev <dmitry.klpv@gmail.com>2020-01-30 23:06:22 +0300
committerDmitry Kolupaev <dmitry.klpv@gmail.com>2020-02-25 01:18:20 +0300
commitcb34e5c887965de1e85d14d09bc14183c1724aed (patch)
treed20e0f875be15860d0dee9ed8aa7d3d4608405c9
parentef49f2e0eb28f3eb6445eff3aa095edc4b8a64d8 (diff)
downloadservo-cb34e5c887965de1e85d14d09bc14183c1724aed.tar.gz
servo-cb34e5c887965de1e85d14d09bc14183c1724aed.zip
Move dirname collection to input
-rw-r--r--components/script/dom/htmlformelement.rs17
-rwxr-xr-xcomponents/script/dom/htmlinputelement.rs18
-rw-r--r--components/script/dom/window.rs1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr.html19
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/dirname-rtl.html25
5 files changed, 43 insertions, 37 deletions
diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs
index ffd0d111cad..6f4d788fa6b 100644
--- a/components/script/dom/htmlformelement.rs
+++ b/components/script/dom/htmlformelement.rs
@@ -745,8 +745,6 @@ impl HTMLFormElement {
.map(|field| (&*field.name, field.replace_value(charset))),
);
- println!("New URL: {url}", url = &load_data.url);
-
self.plan_to_navigate(load_data, target);
}
@@ -952,22 +950,7 @@ impl HTMLFormElement {
match element {
HTMLElementTypeId::HTMLInputElement => {
let input = child.downcast::<HTMLInputElement>().unwrap();
-
data_set.append(&mut input.form_datums(submitter, encoding));
-
- // TODO: probably move to input.form_datums(...) function
- // 4.10.18.2 https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#submitting-element-directionality:-the-dirname-attribute
- let dirname: DOMString = input.DirName();
- let dirname_str: &str = &*dirname;
- if !dirname_str.is_empty() {
- data_set.push(FormDatum {
- ty: input.Type(),
- name: DOMString::from_string(dirname_str.to_owned()),
- value: FormDatumValue::String(DOMString::from(
- input.directionality("auto"),
- )),
- });
- }
},
HTMLElementTypeId::HTMLButtonElement => {
let button = child.downcast::<HTMLButtonElement>().unwrap();
diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs
index 298af937a32..7141f9a4537 100755
--- a/components/script/dom/htmlinputelement.rs
+++ b/components/script/dom/htmlinputelement.rs
@@ -1473,11 +1473,25 @@ impl HTMLInputElement {
}
// Step 5.12
- vec![FormDatum {
+ let mut result = vec![FormDatum {
ty: ty.clone(),
name: name,
value: FormDatumValue::String(self.Value()),
- }]
+ }];
+
+ // 4.10.18.2
+ // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#submitting-element-directionality:-the-dirname-attribute
+ let dirname: DOMString = self.DirName();
+ let directionality = DOMString::from(self.directionality("auto"));
+ if !dirname.is_empty() {
+ result.push(FormDatum {
+ ty: ty.clone(),
+ name: dirname.clone(),
+ value: FormDatumValue::String(directionality),
+ });
+ }
+
+ result
}
// https://html.spec.whatwg.org/multipage/#radio-button-group
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 724a44e9869..ce290caabf7 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -2017,7 +2017,6 @@ impl Window {
}
// TODO: step 11, navigationType.
// Step 12, 13
- println!("ScriptThread::navigate");
ScriptThread::navigate(pipeline_id, load_data, replace);
};
}
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr.html b/tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr.html
index 6420b5b0c76..9d1c9eb77e9 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr.html
@@ -20,12 +20,17 @@
}
var t = async_test("submit element directionality");
- setTimeout(function() {
- document.querySelector("input").value="foobar";
- document.querySelector("button").click();
+ document.querySelector("input").value = "foobar";
+ document.querySelector("button").click();
- document.querySelector("iframe").onload = t.step_func_done(function() {
- assert_equals(getParameterByName("comment.dir"), "ltr");
- });
- }, 3000);
+ var iframe = document.querySelector("iframe");
+ iframe.onload = t.step_func(function() {
+ // The initial about:blank load event can be fired before the form navigation occurs.
+ // See https://github.com/whatwg/html/issues/490 for more information.
+ if(iframe.contentWindow.location.href == "about:blank") { return; }
+
+ assert_equals(getParameterByName("comment.dir"), "ltr");
+
+ t.done();
+ });
</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/dirname-rtl.html b/tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/dirname-rtl.html
index 69eb45c992c..92bf2c3c92b 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/dirname-rtl.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/dirname-rtl.html
@@ -7,8 +7,8 @@
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<form action="dirname-ltr-iframe.html" method=get target="iframe">
- <p><label>Comment: <input type=text id="comment-input" name="comment" dirname="comment.dir" required/></label></p>
- <p><button type=submit>Post Comment</button></p>
+ <p><label>Comment: <input type=text name="comment" dirname="comment.dir" required/></label></p>
+ <p><button type=submit>Post Comment</button></p>
</form>
<iframe name="iframe"></iframe>
<script>
@@ -20,13 +20,18 @@
}
var t = async_test("submit element directionality");
- setTimeout(3000, function() {
- var rtlValue = "مرحبا";
- document.querySelector("input").value = rtlValue;
- document.querySelector("button").click();
+ var rtlValue = "مرحبا";
+ document.querySelector("input").value = rtlValue;
+ document.querySelector("button").click();
- document.querySelector("iframe").onload = t.step_func_done(function() {
- assert_equals(getParameterByName("comment.dir"), "rtl");
- });
- }, 3000);
+ var iframe = document.querySelector("iframe");
+ iframe.onload = t.step_func(function() {
+ // The initial about:blank load event can be fired before the form navigation occurs.
+ // See https://github.com/whatwg/html/issues/490 for more information.
+ if(iframe.contentWindow.location.href == "about:blank") { return; }
+
+ assert_equals(getParameterByName("comment.dir"), "rtl");
+
+ t.done();
+ });
</script>