Auto merge of #24379 - PeaceRebel:dom_response_check_opaque_filter, r=jdm

Dom response check opaque filter

<!-- Please describe your changes on the following line: -->
Added setters for url_list, status, and body in `Response`. Response members are set for [Network Error](https://fetch.spec.whatwg.org/#concept-network-error), [Opaque](https://fetch.spec.whatwg.org/#concept-filtered-response-opaque) and [Opaque-redirect](https://fetch.spec.whatwg.org/#concept-filtered-response-opaque-redirect) responses.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #24372 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/24379)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2019-10-11 10:45:58 -04:00 committed by GitHub
commit 723df4abcf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 38 additions and 162 deletions

View file

@ -395,6 +395,7 @@ fn serialize_without_fragment(url: &ServoUrl) -> &str {
impl Response {
pub fn set_type(&self, new_response_type: DOMResponseType) {
*self.response_type.borrow_mut() = new_response_type;
self.set_response_members_by_type(new_response_type);
}
pub fn set_headers(&self, option_hyper_headers: Option<Serde<HyperHeaders>>) {
@ -412,6 +413,33 @@ impl Response {
*self.url.borrow_mut() = Some(final_url);
}
fn set_response_members_by_type(&self, response_type: DOMResponseType) {
match response_type {
DOMResponseType::Error => {
*self.status.borrow_mut() = None;
self.set_raw_status(None);
self.set_headers(None);
*self.body.borrow_mut() = NetTraitsResponseBody::Done(vec![]);
},
DOMResponseType::Opaque => {
*self.url_list.borrow_mut() = vec![];
*self.status.borrow_mut() = None;
self.set_raw_status(None);
self.set_headers(None);
*self.body.borrow_mut() = NetTraitsResponseBody::Done(vec![]);
},
DOMResponseType::Opaqueredirect => {
*self.status.borrow_mut() = None;
self.set_raw_status(None);
self.set_headers(None);
*self.body.borrow_mut() = NetTraitsResponseBody::Done(vec![]);
},
DOMResponseType::Default => {},
DOMResponseType::Basic => {},
DOMResponseType::Cors => {},
}
}
#[allow(unrooted_must_root)]
pub fn finish(&self, body: Vec<u8>) {
*self.body.borrow_mut() = NetTraitsResponseBody::Done(body);

View file

@ -239,14 +239,16 @@ impl FetchResponseListener for FetchContext {
fill_headers_with_metadata(self.response_object.root(), m);
self.response_object.root().set_type(DOMResponseType::Cors);
},
FilteredMetadata::Opaque => self
.response_object
FilteredMetadata::Opaque => {
self.response_object
.root()
.set_type(DOMResponseType::Opaque),
FilteredMetadata::OpaqueRedirect => self
.response_object
.set_type(DOMResponseType::Opaque);
},
FilteredMetadata::OpaqueRedirect => {
self.response_object
.root()
.set_type(DOMResponseType::Opaqueredirect),
.set_type(DOMResponseType::Opaqueredirect);
},
},
},
}

View file

@ -19,9 +19,6 @@
[CORS invalid integrity]
expected: FAIL
[Empty string integrity for opaque response]
expected: FAIL
[SHA-* integrity for opaque response]
expected: FAIL
@ -39,9 +36,6 @@
[CORS invalid integrity]
expected: FAIL
[Empty string integrity for opaque response]
expected: FAIL
[SHA-* integrity for opaque response]
expected: FAIL

View file

@ -1,15 +0,0 @@
[mode-no-cors.sub.any.worker.html]
[Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors mode]
expected: FAIL
[Fetch http://web-platform.test:8001/fetch/api/resources/top.txt with no-cors mode]
expected: FAIL
[mode-no-cors.sub.any.html]
[Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors mode]
expected: FAIL
[Fetch http://web-platform.test:8001/fetch/api/resources/top.txt with no-cors mode]
expected: FAIL

View file

@ -1,38 +1,7 @@
[cors-basic.any.worker.html]
type: testharness
[Same domain different port [no-cors mode\]]
expected: FAIL
[Same domain different protocol different port [no-cors mode\]]
expected: FAIL
[Cross domain basic usage [no-cors mode\]]
expected: FAIL
[Cross domain different port [no-cors mode\]]
expected: FAIL
[Cross domain different protocol [no-cors mode\]]
expected: FAIL
[cors-basic]
expected: FAIL
[cors-basic.any.html]
type: testharness
[Same domain different port [no-cors mode\]]
expected: FAIL
[Same domain different protocol different port [no-cors mode\]]
expected: FAIL
[Cross domain basic usage [no-cors mode\]]
expected: FAIL
[Cross domain different port [no-cors mode\]]
expected: FAIL
[Cross domain different protocol [no-cors mode\]]
expected: FAIL

View file

@ -1,9 +0,0 @@
[redirect-empty-location.any.worker.html]
[redirect response with empty Location, manual mode]
expected: FAIL
[redirect-empty-location.any.html]
[redirect response with empty Location, manual mode]
expected: FAIL

View file

@ -1,93 +0,0 @@
[redirect-location.any.worker.html]
[Redirect 301 in "manual" mode without location]
expected: FAIL
[Redirect 301 in "manual" mode with invalid location]
expected: FAIL
[Redirect 301 in "manual" mode with data location]
expected: FAIL
[Redirect 302 in "manual" mode without location]
expected: FAIL
[Redirect 302 in "manual" mode with invalid location]
expected: FAIL
[Redirect 302 in "manual" mode with data location]
expected: FAIL
[Redirect 303 in "manual" mode without location]
expected: FAIL
[Redirect 303 in "manual" mode with invalid location]
expected: FAIL
[Redirect 303 in "manual" mode with data location]
expected: FAIL
[Redirect 307 in "manual" mode without location]
expected: FAIL
[Redirect 307 in "manual" mode with invalid location]
expected: FAIL
[Redirect 307 in "manual" mode with data location]
expected: FAIL
[Redirect 308 in "manual" mode without location]
expected: FAIL
[Redirect 308 in "manual" mode with invalid location]
expected: FAIL
[Redirect 308 in "manual" mode with data location]
expected: FAIL
[redirect-location.any.html]
[Redirect 301 in "manual" mode without location]
expected: FAIL
[Redirect 301 in "manual" mode with invalid location]
expected: FAIL
[Redirect 301 in "manual" mode with data location]
expected: FAIL
[Redirect 302 in "manual" mode without location]
expected: FAIL
[Redirect 302 in "manual" mode with invalid location]
expected: FAIL
[Redirect 302 in "manual" mode with data location]
expected: FAIL
[Redirect 303 in "manual" mode without location]
expected: FAIL
[Redirect 303 in "manual" mode with invalid location]
expected: FAIL
[Redirect 303 in "manual" mode with data location]
expected: FAIL
[Redirect 307 in "manual" mode without location]
expected: FAIL
[Redirect 307 in "manual" mode with invalid location]
expected: FAIL
[Redirect 307 in "manual" mode with data location]
expected: FAIL
[Redirect 308 in "manual" mode without location]
expected: FAIL
[Redirect 308 in "manual" mode with invalid location]
expected: FAIL
[Redirect 308 in "manual" mode with data location]
expected: FAIL