aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/bindings/mozmap.rs1
-rw-r--r--components/script/dom/headers.rs22
-rw-r--r--components/script/dom/request.rs20
-rw-r--r--components/script/dom/webidls/Headers.webidl3
-rw-r--r--tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini35
-rw-r--r--tests/wpt/metadata/fetch/api/headers/headers-casing.html.ini5
-rw-r--r--tests/wpt/metadata/fetch/api/headers/headers-normalize.html.ini5
-rw-r--r--tests/wpt/metadata/fetch/api/request/request-clone.sub.html.ini7
-rw-r--r--tests/wpt/metadata/fetch/api/request/request-init-002.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/request/request-init-003.sub.html.ini13
-rw-r--r--tests/wpt/metadata/fetch/api/request/request-structure.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/response/response-clone.html.ini19
-rw-r--r--tests/wpt/metadata/fetch/api/response/response-init-002.html.ini3
-rw-r--r--tests/wpt/metadata/html/dom/interfaces.html.ini1
-rw-r--r--tests/wpt/metadata/webgl/conformance-1.0.3/conformance/context/methods.html.ini1
-rw-r--r--tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/gl-enable-enum-test.html.ini1
16 files changed, 65 insertions, 77 deletions
diff --git a/components/script/dom/bindings/mozmap.rs b/components/script/dom/bindings/mozmap.rs
index 557ba0662a0..d44114cd057 100644
--- a/components/script/dom/bindings/mozmap.rs
+++ b/components/script/dom/bindings/mozmap.rs
@@ -23,6 +23,7 @@ use std::collections::HashMap;
use std::ops::Deref;
/// The `MozMap` (open-ended dictionary) type.
+#[derive(Clone)]
pub struct MozMap<T> {
map: HashMap<DOMString, T>,
}
diff --git a/components/script/dom/headers.rs b/components/script/dom/headers.rs
index b977110955c..4b832121654 100644
--- a/components/script/dom/headers.rs
+++ b/components/script/dom/headers.rs
@@ -3,10 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::cell::DOMRefCell;
-use dom::bindings::codegen::Bindings::HeadersBinding;
-use dom::bindings::codegen::Bindings::HeadersBinding::HeadersMethods;
-use dom::bindings::codegen::Bindings::HeadersBinding::HeadersWrap;
-use dom::bindings::codegen::UnionTypes::HeadersOrByteStringSequenceSequence;
+use dom::bindings::codegen::Bindings::HeadersBinding::{HeadersInit, HeadersMethods, HeadersWrap};
use dom::bindings::error::{Error, ErrorResult, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::iterable::Iterable;
@@ -51,7 +48,7 @@ impl Headers {
}
// https://fetch.spec.whatwg.org/#dom-headers
- pub fn Constructor(global: GlobalRef, init: Option<HeadersBinding::HeadersInit>)
+ pub fn Constructor(global: GlobalRef, init: Option<HeadersInit>)
-> Fallible<Root<Headers>> {
let dom_headers_new = Headers::new(global);
try!(dom_headers_new.fill(init));
@@ -169,10 +166,10 @@ impl HeadersMethods for Headers {
impl Headers {
// https://fetch.spec.whatwg.org/#concept-headers-fill
- pub fn fill(&self, filler: Option<HeadersBinding::HeadersInit>) -> ErrorResult {
+ pub fn fill(&self, filler: Option<HeadersInit>) -> ErrorResult {
match filler {
// Step 1
- Some(HeadersOrByteStringSequenceSequence::Headers(h)) => {
+ Some(HeadersInit::Headers(h)) => {
for header in h.header_list.borrow().iter() {
try!(self.Append(
ByteString::new(Vec::from(header.name())),
@@ -182,7 +179,7 @@ impl Headers {
Ok(())
},
// Step 2
- Some(HeadersOrByteStringSequenceSequence::ByteStringSequenceSequence(v)) => {
+ Some(HeadersInit::ByteStringSequenceSequence(v)) => {
for mut seq in v {
if seq.len() == 2 {
let val = seq.pop().unwrap();
@@ -196,7 +193,14 @@ impl Headers {
}
Ok(())
},
- // Step 3 TODO constructor for when init is an open-ended dictionary
+ Some(HeadersInit::ByteStringMozMap(m)) => {
+ for (key, value) in m.iter() {
+ let key_vec = key.as_ref().to_string().into();
+ let headers_key = ByteString::new(key_vec);
+ try!(self.Append(headers_key, value.clone()));
+ }
+ Ok(())
+ },
None => Ok(()),
}
}
diff --git a/components/script/dom/request.rs b/components/script/dom/request.rs
index e8eb62c3f05..149c61c96ee 100644
--- a/components/script/dom/request.rs
+++ b/components/script/dom/request.rs
@@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::cell::DOMRefCell;
+use dom::bindings::codegen::Bindings::HeadersBinding::HeadersInit;
use dom::bindings::codegen::Bindings::RequestBinding;
use dom::bindings::codegen::Bindings::RequestBinding::ReferrerPolicy;
use dom::bindings::codegen::Bindings::RequestBinding::RequestCache;
@@ -14,7 +15,6 @@ use dom::bindings::codegen::Bindings::RequestBinding::RequestMethods;
use dom::bindings::codegen::Bindings::RequestBinding::RequestMode;
use dom::bindings::codegen::Bindings::RequestBinding::RequestRedirect;
use dom::bindings::codegen::Bindings::RequestBinding::RequestType;
-use dom::bindings::codegen::UnionTypes::HeadersOrByteStringSequenceSequence;
use dom::bindings::error::{Error, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root};
@@ -312,7 +312,7 @@ impl Request {
// Step 28
if let Some(possible_header) = init.headers.as_ref() {
- if let &HeadersOrByteStringSequenceSequence::Headers(ref init_headers) = possible_header {
+ if let &HeadersInit::Headers(ref init_headers) = possible_header {
headers_copy = init_headers.clone();
}
}
@@ -337,7 +337,7 @@ impl Request {
}
// Step 31
- try!(r.Headers().fill(Some(HeadersOrByteStringSequenceSequence::Headers(headers_copy))));
+ try!(r.Headers().fill(Some(HeadersInit::Headers(headers_copy))));
// Step 32
let input_body = if let RequestInfo::Request(ref input_request) = input {
@@ -796,13 +796,15 @@ impl Into<RequestRedirect> for NetTraitsRequestRedirect {
}
}
-impl Clone for HeadersOrByteStringSequenceSequence {
- fn clone(&self) -> HeadersOrByteStringSequenceSequence {
+impl Clone for HeadersInit {
+ fn clone(&self) -> HeadersInit {
match self {
- &HeadersOrByteStringSequenceSequence::Headers(ref h) =>
- HeadersOrByteStringSequenceSequence::Headers(h.clone()),
- &HeadersOrByteStringSequenceSequence::ByteStringSequenceSequence(ref b) =>
- HeadersOrByteStringSequenceSequence::ByteStringSequenceSequence(b.clone()),
+ &HeadersInit::Headers(ref h) =>
+ HeadersInit::Headers(h.clone()),
+ &HeadersInit::ByteStringSequenceSequence(ref b) =>
+ HeadersInit::ByteStringSequenceSequence(b.clone()),
+ &HeadersInit::ByteStringMozMap(ref m) =>
+ HeadersInit::ByteStringMozMap(m.clone()),
}
}
}
diff --git a/components/script/dom/webidls/Headers.webidl b/components/script/dom/webidls/Headers.webidl
index ee3d4b2fe94..5ae08ad2bd7 100644
--- a/components/script/dom/webidls/Headers.webidl
+++ b/components/script/dom/webidls/Headers.webidl
@@ -4,8 +4,7 @@
// https://fetch.spec.whatwg.org/#headers-class
-// TODO support OpenEndedDictionary<ByteString>
-typedef (Headers or sequence<sequence<ByteString>>) HeadersInit;
+typedef (Headers or sequence<sequence<ByteString>> or MozMap<ByteString>) HeadersInit;
[Constructor(optional HeadersInit init),
Exposed=(Window,Worker)]
diff --git a/tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini b/tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini
deleted file mode 100644
index 69a663ec45f..00000000000
--- a/tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini
+++ /dev/null
@@ -1,35 +0,0 @@
-[headers-basic.html]
- type: testharness
- [Create headers from empty object]
- expected: FAIL
-
- [Create headers with OpenEndedDictionary]
- expected: FAIL
-
- [Create headers with existing headers]
- expected: FAIL
-
- [Check has method]
- expected: FAIL
-
- [Check delete method]
- expected: FAIL
-
- [Check get method]
- expected: FAIL
-
- [Check keys method]
- expected: FAIL
-
- [Check values method]
- expected: FAIL
-
- [Check entries method]
- expected: FAIL
-
- [Check Symbol.iterator method]
- expected: FAIL
-
- [Check forEach 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
deleted file mode 100644
index 12f926380bf..00000000000
--- a/tests/wpt/metadata/fetch/api/headers/headers-casing.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[headers-casing.html]
- type: testharness
- [Create headers, names use characters with different case]
- 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
deleted file mode 100644
index 4c333d52194..00000000000
--- a/tests/wpt/metadata/fetch/api/headers/headers-normalize.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[headers-normalize.html]
- type: testharness
- [Create headers with not normalized values]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/fetch/api/request/request-clone.sub.html.ini b/tests/wpt/metadata/fetch/api/request/request-clone.sub.html.ini
index 82cde19ce37..eb2b589fa57 100644
--- a/tests/wpt/metadata/fetch/api/request/request-clone.sub.html.ini
+++ b/tests/wpt/metadata/fetch/api/request/request-clone.sub.html.ini
@@ -1,3 +1,8 @@
[request-clone.sub.html]
type: testharness
- expected: ERROR
+ [Check cloning a request]
+ expected: FAIL
+
+ [Check cloning a request copies the headers]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/request/request-init-002.html.ini b/tests/wpt/metadata/fetch/api/request/request-init-002.html.ini
index d07ae0c1f49..903c3bbdba3 100644
--- a/tests/wpt/metadata/fetch/api/request/request-init-002.html.ini
+++ b/tests/wpt/metadata/fetch/api/request/request-init-002.html.ini
@@ -1,8 +1,5 @@
[request-init-002.html]
type: testharness
- [Initialize Request with headers values]
- expected: FAIL
-
[Initialize Request's body with undefined]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/api/request/request-init-003.sub.html.ini b/tests/wpt/metadata/fetch/api/request/request-init-003.sub.html.ini
index 83baaaab7f1..e5e3d9856c6 100644
--- a/tests/wpt/metadata/fetch/api/request/request-init-003.sub.html.ini
+++ b/tests/wpt/metadata/fetch/api/request/request-init-003.sub.html.ini
@@ -1,3 +1,14 @@
[request-init-003.sub.html]
type: testharness
- expected: ERROR
+ [Check request values when initialized from Request]
+ expected: FAIL
+
+ [Check request values when initialized from Request and init values]
+ expected: FAIL
+
+ [Check request values when initialized from url string]
+ expected: FAIL
+
+ [Check request values when initialized from url and init values]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/request/request-structure.html.ini b/tests/wpt/metadata/fetch/api/request/request-structure.html.ini
index 9d40c13ac0c..31e9c7b713d 100644
--- a/tests/wpt/metadata/fetch/api/request/request-structure.html.ini
+++ b/tests/wpt/metadata/fetch/api/request/request-structure.html.ini
@@ -15,9 +15,6 @@
[Request has text method]
expected: FAIL
- [Check headers attribute]
- expected: FAIL
-
[Check referrer attribute]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/api/response/response-clone.html.ini b/tests/wpt/metadata/fetch/api/response/response-clone.html.ini
index a570446c57c..0f02dd1b75f 100644
--- a/tests/wpt/metadata/fetch/api/response/response-clone.html.ini
+++ b/tests/wpt/metadata/fetch/api/response/response-clone.html.ini
@@ -1,3 +1,20 @@
[response-clone.html]
type: testharness
- expected: ERROR
+ [Check Response's clone has the expected attribute values]
+ expected: FAIL
+
+ [Check orginal response's body after cloning]
+ expected: FAIL
+
+ [Check cloned response's body]
+ expected: FAIL
+
+ [Cannot clone a disturbed response]
+ expected: FAIL
+
+ [Cloned responses should provide the same data]
+ expected: FAIL
+
+ [Cancelling stream should not affect cloned one]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini b/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini
index 099bb515005..6fbd45bbb99 100644
--- a/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini
+++ b/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini
@@ -1,8 +1,5 @@
[response-init-002.html]
type: testharness
- [Initialize Response with headers values]
- expected: FAIL
-
[Initialize Response's body with application/octet-binary]
expected: FAIL
diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini
index c5979e47e4d..85354ada30b 100644
--- a/tests/wpt/metadata/html/dom/interfaces.html.ini
+++ b/tests/wpt/metadata/html/dom/interfaces.html.ini
@@ -10664,3 +10664,4 @@
[Navigator interface: window.navigator must inherit property "hardwareConcurrency" with the proper type (22)]
expected: FAIL
+
diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/context/methods.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/context/methods.html.ini
index ab02f21b3bd..6cec6740f90 100644
--- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/context/methods.html.ini
+++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/context/methods.html.ini
@@ -301,3 +301,4 @@
[WebGL test #49: Property either does not exist or is not a function: validateProgram]
expected: FAIL
+
diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/gl-enable-enum-test.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/gl-enable-enum-test.html.ini
index 0bcdb50b83f..977499e3cfe 100644
--- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/gl-enable-enum-test.html.ini
+++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/gl-enable-enum-test.html.ini
@@ -8,3 +8,4 @@
[WebGL test #85: getError expected: NO_ERROR. Was INVALID_ENUM : there should be no errors]
expected: FAIL
+