diff options
author | Dmitry Kolupaev <dmitry.klpv@gmail.com> | 2020-01-30 23:06:22 +0300 |
---|---|---|
committer | Dmitry Kolupaev <dmitry.klpv@gmail.com> | 2020-02-25 01:18:20 +0300 |
commit | cb34e5c887965de1e85d14d09bc14183c1724aed (patch) | |
tree | d20e0f875be15860d0dee9ed8aa7d3d4608405c9 | |
parent | ef49f2e0eb28f3eb6445eff3aa095edc4b8a64d8 (diff) | |
download | servo-cb34e5c887965de1e85d14d09bc14183c1724aed.tar.gz servo-cb34e5c887965de1e85d14d09bc14183c1724aed.zip |
Move dirname collection to input
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> |