mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
Set DOM response members as per the spec for opaque, opaque-redirect and error responses
Signed-off-by: Bipin <peacerebel@protonmail.com>
This commit is contained in:
parent
78438113d4
commit
0f1ddc6fea
7 changed files with 38 additions and 162 deletions
|
@ -395,6 +395,7 @@ fn serialize_without_fragment(url: &ServoUrl) -> &str {
|
||||||
impl Response {
|
impl Response {
|
||||||
pub fn set_type(&self, new_response_type: DOMResponseType) {
|
pub fn set_type(&self, new_response_type: DOMResponseType) {
|
||||||
*self.response_type.borrow_mut() = new_response_type;
|
*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>>) {
|
pub fn set_headers(&self, option_hyper_headers: Option<Serde<HyperHeaders>>) {
|
||||||
|
@ -412,6 +413,33 @@ impl Response {
|
||||||
*self.url.borrow_mut() = Some(final_url);
|
*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)]
|
#[allow(unrooted_must_root)]
|
||||||
pub fn finish(&self, body: Vec<u8>) {
|
pub fn finish(&self, body: Vec<u8>) {
|
||||||
*self.body.borrow_mut() = NetTraitsResponseBody::Done(body);
|
*self.body.borrow_mut() = NetTraitsResponseBody::Done(body);
|
||||||
|
|
|
@ -236,14 +236,16 @@ impl FetchResponseListener for FetchContext {
|
||||||
fill_headers_with_metadata(self.response_object.root(), m);
|
fill_headers_with_metadata(self.response_object.root(), m);
|
||||||
self.response_object.root().set_type(DOMResponseType::Cors);
|
self.response_object.root().set_type(DOMResponseType::Cors);
|
||||||
},
|
},
|
||||||
FilteredMetadata::Opaque => self
|
FilteredMetadata::Opaque => {
|
||||||
.response_object
|
self.response_object
|
||||||
.root()
|
.root()
|
||||||
.set_type(DOMResponseType::Opaque),
|
.set_type(DOMResponseType::Opaque);
|
||||||
FilteredMetadata::OpaqueRedirect => self
|
},
|
||||||
.response_object
|
FilteredMetadata::OpaqueRedirect => {
|
||||||
.root()
|
self.response_object
|
||||||
.set_type(DOMResponseType::Opaqueredirect),
|
.root()
|
||||||
|
.set_type(DOMResponseType::Opaqueredirect);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,9 +19,6 @@
|
||||||
[CORS invalid integrity]
|
[CORS invalid integrity]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Empty string integrity for opaque response]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[SHA-* integrity for opaque response]
|
[SHA-* integrity for opaque response]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -39,9 +36,6 @@
|
||||||
[CORS invalid integrity]
|
[CORS invalid integrity]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Empty string integrity for opaque response]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[SHA-* integrity for opaque response]
|
[SHA-* integrity for opaque response]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -1,38 +1,7 @@
|
||||||
[cors-basic.any.worker.html]
|
[cors-basic.any.worker.html]
|
||||||
type: testharness
|
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]
|
[cors-basic]
|
||||||
expected: FAIL
|
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
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue