Skip to content

Commit 723df4a

Browse files
author
bors-servo
authored
Auto merge of servo#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 servo#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 -->
2 parents 46b048c + 0f1ddc6 commit 723df4a

File tree

7 files changed

+38
-162
lines changed

7 files changed

+38
-162
lines changed

components/script/dom/response.rs

+28
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,7 @@ fn serialize_without_fragment(url: &ServoUrl) -> &str {
395395
impl Response {
396396
pub fn set_type(&self, new_response_type: DOMResponseType) {
397397
*self.response_type.borrow_mut() = new_response_type;
398+
self.set_response_members_by_type(new_response_type);
398399
}
399400

400401
pub fn set_headers(&self, option_hyper_headers: Option<Serde<HyperHeaders>>) {
@@ -412,6 +413,33 @@ impl Response {
412413
*self.url.borrow_mut() = Some(final_url);
413414
}
414415

416+
fn set_response_members_by_type(&self, response_type: DOMResponseType) {
417+
match response_type {
418+
DOMResponseType::Error => {
419+
*self.status.borrow_mut() = None;
420+
self.set_raw_status(None);
421+
self.set_headers(None);
422+
*self.body.borrow_mut() = NetTraitsResponseBody::Done(vec![]);
423+
},
424+
DOMResponseType::Opaque => {
425+
*self.url_list.borrow_mut() = vec![];
426+
*self.status.borrow_mut() = None;
427+
self.set_raw_status(None);
428+
self.set_headers(None);
429+
*self.body.borrow_mut() = NetTraitsResponseBody::Done(vec![]);
430+
},
431+
DOMResponseType::Opaqueredirect => {
432+
*self.status.borrow_mut() = None;
433+
self.set_raw_status(None);
434+
self.set_headers(None);
435+
*self.body.borrow_mut() = NetTraitsResponseBody::Done(vec![]);
436+
},
437+
DOMResponseType::Default => {},
438+
DOMResponseType::Basic => {},
439+
DOMResponseType::Cors => {},
440+
}
441+
}
442+
415443
#[allow(unrooted_must_root)]
416444
pub fn finish(&self, body: Vec<u8>) {
417445
*self.body.borrow_mut() = NetTraitsResponseBody::Done(body);

components/script/fetch.rs

+10-8
Original file line numberDiff line numberDiff line change
@@ -239,14 +239,16 @@ impl FetchResponseListener for FetchContext {
239239
fill_headers_with_metadata(self.response_object.root(), m);
240240
self.response_object.root().set_type(DOMResponseType::Cors);
241241
},
242-
FilteredMetadata::Opaque => self
243-
.response_object
244-
.root()
245-
.set_type(DOMResponseType::Opaque),
246-
FilteredMetadata::OpaqueRedirect => self
247-
.response_object
248-
.root()
249-
.set_type(DOMResponseType::Opaqueredirect),
242+
FilteredMetadata::Opaque => {
243+
self.response_object
244+
.root()
245+
.set_type(DOMResponseType::Opaque);
246+
},
247+
FilteredMetadata::OpaqueRedirect => {
248+
self.response_object
249+
.root()
250+
.set_type(DOMResponseType::Opaqueredirect);
251+
},
250252
},
251253
},
252254
}

tests/wpt/metadata/fetch/api/basic/integrity.sub.any.js.ini

-6
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@
1919
[CORS invalid integrity]
2020
expected: FAIL
2121

22-
[Empty string integrity for opaque response]
23-
expected: FAIL
24-
2522
[SHA-* integrity for opaque response]
2623
expected: FAIL
2724

@@ -39,9 +36,6 @@
3936
[CORS invalid integrity]
4037
expected: FAIL
4138

42-
[Empty string integrity for opaque response]
43-
expected: FAIL
44-
4539
[SHA-* integrity for opaque response]
4640
expected: FAIL
4741

tests/wpt/metadata/fetch/api/basic/mode-no-cors.sub.any.js.ini

-15
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,7 @@
11
[cors-basic.any.worker.html]
22
type: testharness
3-
[Same domain different port [no-cors mode\]]
4-
expected: FAIL
5-
6-
[Same domain different protocol different port [no-cors mode\]]
7-
expected: FAIL
8-
9-
[Cross domain basic usage [no-cors mode\]]
10-
expected: FAIL
11-
12-
[Cross domain different port [no-cors mode\]]
13-
expected: FAIL
14-
15-
[Cross domain different protocol [no-cors mode\]]
16-
expected: FAIL
173

184
[cors-basic]
195
expected: FAIL
206

217

22-
[cors-basic.any.html]
23-
type: testharness
24-
[Same domain different port [no-cors mode\]]
25-
expected: FAIL
26-
27-
[Same domain different protocol different port [no-cors mode\]]
28-
expected: FAIL
29-
30-
[Cross domain basic usage [no-cors mode\]]
31-
expected: FAIL
32-
33-
[Cross domain different port [no-cors mode\]]
34-
expected: FAIL
35-
36-
[Cross domain different protocol [no-cors mode\]]
37-
expected: FAIL
38-

tests/wpt/metadata/fetch/api/redirect/redirect-empty-location.any.js.ini

-9
This file was deleted.

tests/wpt/metadata/fetch/api/redirect/redirect-location.any.js.ini

-93
This file was deleted.

0 commit comments

Comments
 (0)