aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/headers.rs23
-rw-r--r--tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini9
-rw-r--r--tests/wpt/metadata/fetch/api/headers/headers-casing.html.ini9
-rw-r--r--tests/wpt/metadata/fetch/api/headers/headers-combine.html.ini6
-rw-r--r--tests/wpt/metadata/fetch/api/headers/headers-errors.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/headers/headers-normalize.html.ini6
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
-