diff options
6 files changed, 14 insertions, 42 deletions
diff --git a/components/script/dom/headers.rs b/components/script/dom/headers.rs index 3329952e0a9..cb3b4d13e48 100644 --- a/components/script/dom/headers.rs +++ b/components/script/dom/headers.rs @@ -80,8 +80,11 @@ impl HeadersMethods for Headers { return Ok(()); } // Step 7 - let mut combined_value = self.header_list.borrow_mut().get_raw(&valid_name).unwrap()[0].clone(); - combined_value.push(b","[0]); + let mut combined_value: Vec<u8> = vec![]; + if let Some(v) = self.header_list.borrow().get_raw(&valid_name) { + combined_value = v[0].clone(); + combined_value.push(b","[0]); + } combined_value.extend(valid_value.iter().cloned()); self.header_list.borrow_mut().set_raw(valid_name, vec![combined_value]); Ok(()) @@ -165,8 +168,6 @@ impl Headers { match filler { // Step 1 Some(HeadersOrByteStringSequenceSequence::Headers(h)) => { - // header_list_copy has type hyper::header::Headers - let header_list_copy = h.header_list.clone(); for header in h.header_list.borrow().iter() { try!(self.Append( ByteString::new(Vec::from(header.name())), @@ -346,20 +347,24 @@ fn is_field_name(name: &ByteString) -> bool { // field-content = field-vchar [ 1*( SP / HTAB / field-vchar ) // field-vchar ] fn is_field_content(value: &ByteString) -> bool { - if value.len() == 0 { + let value_len = value.len(); + + if value_len == 0 { return false; } if !is_field_vchar(value[0]) { return false; } - for &ch in &value[1..value.len() - 1] { - if !is_field_vchar(ch) || !is_space(ch) || !is_htab(ch) { - return false; + if value_len > 2 { + for &ch in &value[1..value_len - 1] { + if !is_field_vchar(ch) && !is_space(ch) && !is_htab(ch) { + return false; + } } } - if !is_field_vchar(value[value.len() - 1]) { + if !is_field_vchar(value[value_len - 1]) { return false; } diff --git a/tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini b/tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini index 16379eaa71a..69a663ec45f 100644 --- a/tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini +++ b/tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini @@ -3,21 +3,12 @@ [Create headers from empty object] expected: FAIL - [Create headers with sequence] - expected: FAIL - [Create headers with OpenEndedDictionary] expected: FAIL [Create headers with existing headers] expected: FAIL - [Check append method] - expected: FAIL - - [Check set method] - expected: FAIL - [Check has method] expected: FAIL diff --git a/tests/wpt/metadata/fetch/api/headers/headers-casing.html.ini b/tests/wpt/metadata/fetch/api/headers/headers-casing.html.ini index c9b0c365129..12f926380bf 100644 --- a/tests/wpt/metadata/fetch/api/headers/headers-casing.html.ini +++ b/tests/wpt/metadata/fetch/api/headers/headers-casing.html.ini @@ -3,12 +3,3 @@ [Create headers, names use characters with different case] expected: FAIL - [Check append method, names use characters with different case] - expected: FAIL - - [Check set method, names use characters with different case] - expected: FAIL - - [Check delete method, names use characters with different case] - expected: FAIL - diff --git a/tests/wpt/metadata/fetch/api/headers/headers-combine.html.ini b/tests/wpt/metadata/fetch/api/headers/headers-combine.html.ini index 1403b64a1c8..f12bddcc5c9 100644 --- a/tests/wpt/metadata/fetch/api/headers/headers-combine.html.ini +++ b/tests/wpt/metadata/fetch/api/headers/headers-combine.html.ini @@ -3,12 +3,6 @@ [Create headers using same name for different values] expected: FAIL - [Check delete and has methods when using same name for different values] - expected: FAIL - - [Check set methods when called with already used name] - expected: FAIL - [Check append methods when called with already used name] expected: FAIL diff --git a/tests/wpt/metadata/fetch/api/headers/headers-errors.html.ini b/tests/wpt/metadata/fetch/api/headers/headers-errors.html.ini index 96439e158ec..3941ca87bcf 100644 --- a/tests/wpt/metadata/fetch/api/headers/headers-errors.html.ini +++ b/tests/wpt/metadata/fetch/api/headers/headers-errors.html.ini @@ -1,8 +1,5 @@ [headers-errors.html] type: testharness - [Headers forEach throws if argument is not callable] - expected: FAIL - [Headers forEach loop should stop if callback is throwing exception] expected: FAIL diff --git a/tests/wpt/metadata/fetch/api/headers/headers-normalize.html.ini b/tests/wpt/metadata/fetch/api/headers/headers-normalize.html.ini index 1ba80cd1437..4c333d52194 100644 --- a/tests/wpt/metadata/fetch/api/headers/headers-normalize.html.ini +++ b/tests/wpt/metadata/fetch/api/headers/headers-normalize.html.ini @@ -3,9 +3,3 @@ [Create headers with not normalized values] expected: FAIL - [Check append method whith not normalized values] - expected: FAIL - - [Check set method whith not normalized values] - expected: FAIL - |