Skip to content

Commit

Permalink
Move dirname collection to input
Browse files Browse the repository at this point in the history
  • Loading branch information
NeverHappened committed Feb 24, 2020
1 parent ef49f2e commit cb34e5c
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 37 deletions.
17 changes: 0 additions & 17 deletions components/script/dom/htmlformelement.rs
Expand Up @@ -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);
}

Expand Down Expand Up @@ -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();
Expand Down
18 changes: 16 additions & 2 deletions components/script/dom/htmlinputelement.rs
Expand Up @@ -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
Expand Down
1 change: 0 additions & 1 deletion components/script/dom/window.rs
Expand Up @@ -2017,7 +2017,6 @@ impl Window {
}
// TODO: step 11, navigationType.
// Step 12, 13
println!("ScriptThread::navigate");
ScriptThread::navigate(pipeline_id, load_data, replace);
};
}
Expand Down
Expand Up @@ -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>
Expand Up @@ -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>
Expand All @@ -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>

0 comments on commit cb34e5c

Please sign in to comment.