Auto merge of #14083 - rnestler:fix_14018, r=jdm

Add redirect_mode to RequestInit

This adds support for non-follow redirect modes for `RequestInit`.
---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #14018 (github issue number if applicable).
- [x] There are tests for these changes

<!-- 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/14083)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-11-09 18:13:06 -06:00 committed by GitHub
commit 58baf3ebb6
4 changed files with 5 additions and 31 deletions

View file

@ -81,7 +81,7 @@ pub enum CacheMode {
} }
/// [Redirect mode](https://fetch.spec.whatwg.org/#concept-request-redirect-mode) /// [Redirect mode](https://fetch.spec.whatwg.org/#concept-request-redirect-mode)
#[derive(Copy, Clone, PartialEq, HeapSizeOf)] #[derive(Copy, Clone, PartialEq, Serialize, Deserialize, HeapSizeOf)]
pub enum RedirectMode { pub enum RedirectMode {
Follow, Follow,
Error, Error,
@ -137,6 +137,7 @@ pub struct RequestInit {
pub referrer_url: Option<Url>, pub referrer_url: Option<Url>,
pub referrer_policy: Option<ReferrerPolicy>, pub referrer_policy: Option<ReferrerPolicy>,
pub pipeline_id: Option<PipelineId>, pub pipeline_id: Option<PipelineId>,
pub redirect_mode: RedirectMode,
} }
impl Default for RequestInit { impl Default for RequestInit {
@ -158,6 +159,7 @@ impl Default for RequestInit {
referrer_url: None, referrer_url: None,
referrer_policy: None, referrer_policy: None,
pipeline_id: None, pipeline_id: None,
redirect_mode: RedirectMode::Follow,
} }
} }
} }
@ -266,6 +268,7 @@ impl Request {
}; };
req.referrer_policy.set(init.referrer_policy); req.referrer_policy.set(init.referrer_policy);
req.pipeline_id.set(init.pipeline_id); req.pipeline_id.set(init.pipeline_id);
req.redirect_mode.set(init.redirect_mode);
req req
} }

View file

@ -61,6 +61,7 @@ fn request_init_from_request(request: NetTraitsRequest) -> NetTraitsRequestInit
referrer_url: from_referrer_to_referrer_url(&request), referrer_url: from_referrer_to_referrer_url(&request),
referrer_policy: request.referrer_policy.get(), referrer_policy: request.referrer_policy.get(),
pipeline_id: request.pipeline_id.get(), pipeline_id: request.pipeline_id.get(),
redirect_mode: request.redirect_mode.get(),
} }
} }

View file

@ -1,32 +1,17 @@
[redirect-mode-worker.html] [redirect-mode-worker.html]
type: testharness type: testharness
[Redirect 301 in "error" mode ]
expected: FAIL
[Redirect 301 in "manual" mode ] [Redirect 301 in "manual" mode ]
expected: FAIL expected: FAIL
[Redirect 302 in "error" mode ]
expected: FAIL
[Redirect 302 in "manual" mode ] [Redirect 302 in "manual" mode ]
expected: FAIL expected: FAIL
[Redirect 303 in "error" mode ]
expected: FAIL
[Redirect 303 in "manual" mode ] [Redirect 303 in "manual" mode ]
expected: FAIL expected: FAIL
[Redirect 307 in "error" mode ]
expected: FAIL
[Redirect 307 in "manual" mode ] [Redirect 307 in "manual" mode ]
expected: FAIL expected: FAIL
[Redirect 308 in "error" mode ]
expected: FAIL
[Redirect 308 in "manual" mode ] [Redirect 308 in "manual" mode ]
expected: FAIL expected: FAIL

View file

@ -1,32 +1,17 @@
[redirect-mode.html] [redirect-mode.html]
type: testharness type: testharness
[Redirect 301 in "error" mode ]
expected: FAIL
[Redirect 301 in "manual" mode ] [Redirect 301 in "manual" mode ]
expected: FAIL expected: FAIL
[Redirect 302 in "error" mode ]
expected: FAIL
[Redirect 302 in "manual" mode ] [Redirect 302 in "manual" mode ]
expected: FAIL expected: FAIL
[Redirect 303 in "error" mode ]
expected: FAIL
[Redirect 303 in "manual" mode ] [Redirect 303 in "manual" mode ]
expected: FAIL expected: FAIL
[Redirect 307 in "error" mode ]
expected: FAIL
[Redirect 307 in "manual" mode ] [Redirect 307 in "manual" mode ]
expected: FAIL expected: FAIL
[Redirect 308 in "error" mode ]
expected: FAIL
[Redirect 308 in "manual" mode ] [Redirect 308 in "manual" mode ]
expected: FAIL expected: FAIL