aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlformelement.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/htmlformelement.rs')
-rw-r--r--components/script/dom/htmlformelement.rs25
1 files changed, 22 insertions, 3 deletions
diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs
index adbb790a181..30d1857de9d 100644
--- a/components/script/dom/htmlformelement.rs
+++ b/components/script/dom/htmlformelement.rs
@@ -950,7 +950,6 @@ impl HTMLFormElement {
match element {
HTMLElementTypeId::HTMLInputElement => {
let input = child.downcast::<HTMLInputElement>().unwrap();
-
data_set.append(&mut input.form_datums(submitter, encoding));
},
HTMLElementTypeId::HTMLButtonElement => {
@@ -981,10 +980,30 @@ impl HTMLFormElement {
_ => (),
}
}
+
+ // Step: 5.13. Add an entry if element has dirname attribute
+ // An element can only have a dirname attribute if it is a textarea element
+ // or an input element whose type attribute is in either the Text state or the Search state
+ let child_element = child.downcast::<Element>().unwrap();
+ let input_matches =
+ child_element
+ .downcast::<HTMLInputElement>()
+ .map_or(false, |input| {
+ input.input_type() == InputType::Text ||
+ input.input_type() == InputType::Search
+ });
+ let textarea_matches = child_element.is::<HTMLTextAreaElement>();
+ let dirname = child_element.get_string_attribute(&local_name!("dirname"));
+ if (input_matches || textarea_matches) && !dirname.is_empty() {
+ let dir = DOMString::from(child_element.directionality());
+ data_set.push(FormDatum {
+ ty: DOMString::from("string"),
+ name: dirname,
+ value: FormDatumValue::String(dir),
+ });
+ }
}
data_set
- // TODO: Handle `dirnames` (needs directionality support)
- // https://html.spec.whatwg.org/multipage/#the-directionality
}
/// <https://html.spec.whatwg.org/multipage/#constructing-the-form-data-set>