aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlformelement.rs
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <ecoal95@gmail.com>2016-11-16 11:57:39 +0100
committerEmilio Cobos Álvarez <ecoal95@gmail.com>2016-11-17 18:34:23 +0100
commit913c874cb55fd0fdc9e8f3a4c34624cd015fac8a (patch)
tree4526ecefafe0cde2f56cb1e2a4ebffd372e1f70a /components/script/dom/htmlformelement.rs
parentf14e7339b5ff95fce0127dce4fe87ce082ab7259 (diff)
downloadservo-913c874cb55fd0fdc9e8f3a4c34624cd015fac8a.tar.gz
servo-913c874cb55fd0fdc9e8f3a4c34624cd015fac8a.zip
Urlmageddon: Use refcounted urls more often.
Diffstat (limited to 'components/script/dom/htmlformelement.rs')
-rw-r--r--components/script/dom/htmlformelement.rs24
1 files changed, 14 insertions, 10 deletions
diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs
index 4ecc6a44fa0..cbf32ef9aab 100644
--- a/components/script/dom/htmlformelement.rs
+++ b/components/script/dom/htmlformelement.rs
@@ -380,10 +380,12 @@ impl HTMLFormElement {
fn mutate_action_url(&self, form_data: &mut Vec<FormDatum>, mut load_data: LoadData, encoding: EncodingRef) {
let charset = &*encoding.whatwg_name().unwrap();
- load_data.url.query_pairs_mut().clear()
- .encoding_override(Some(self.pick_encoding()))
- .extend_pairs(form_data.into_iter()
- .map(|field| (field.name.clone(), field.replace_value(charset))));
+ if let Some(ref mut url) = load_data.url.as_mut_url() {
+ url.query_pairs_mut().clear()
+ .encoding_override(Some(self.pick_encoding()))
+ .extend_pairs(form_data.into_iter()
+ .map(|field| (field.name.clone(), field.replace_value(charset))));
+ }
self.plan_to_navigate(load_data);
}
@@ -394,16 +396,18 @@ impl HTMLFormElement {
let boundary = generate_boundary();
let bytes = match enctype {
FormEncType::UrlEncoded => {
- let mut url = load_data.url.clone();
let charset = &*encoding.whatwg_name().unwrap();
load_data.headers.set(ContentType::form_url_encoded());
- url.query_pairs_mut().clear()
- .encoding_override(Some(self.pick_encoding()))
- .extend_pairs(form_data.into_iter()
- .map(|field| (field.name.clone(), field.replace_value(charset))));
- url.query().unwrap_or("").to_string().into_bytes()
+ if let Some(ref mut url) = load_data.url.as_mut_url() {
+ url.query_pairs_mut().clear()
+ .encoding_override(Some(self.pick_encoding()))
+ .extend_pairs(form_data.into_iter()
+ .map(|field| (field.name.clone(), field.replace_value(charset))));
+ }
+
+ load_data.url.query().unwrap_or("").to_string().into_bytes()
}
FormEncType::FormDataEncoded => {
let mime = mime!(Multipart / FormData; Boundary =(&boundary));