aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/request.rs
diff options
context:
space:
mode:
authorMathieu Hordesseaux <mathieu@adopteunmec.com>2016-10-03 13:43:59 +0200
committerJosh Matthews <josh@joshmatthews.net>2017-02-23 18:55:52 -0500
commit6f97ce826b582fa5e6b77013cdf181a18febb859 (patch)
treea71fc0db5637a1fc45fb85061fa34cd7f061e350 /components/script/dom/request.rs
parentec5ed8edfdfac1cf0692af813217ee7e21620139 (diff)
downloadservo-6f97ce826b582fa5e6b77013cdf181a18febb859.tar.gz
servo-6f97ce826b582fa5e6b77013cdf181a18febb859.zip
Make Request throw less often (fixes #13457)
Diffstat (limited to 'components/script/dom/request.rs')
-rw-r--r--components/script/dom/request.rs17
1 files changed, 6 insertions, 11 deletions
diff --git a/components/script/dom/request.rs b/components/script/dom/request.rs
index a81d9f767b6..7b9f21c270e 100644
--- a/components/script/dom/request.rs
+++ b/components/script/dom/request.rs
@@ -183,9 +183,8 @@ impl Request {
!init.window.handle().is_undefined() {
// Step 13.1
if request.mode == NetTraitsRequestMode::Navigate {
- return Err(Error::Type(
- "Init is present and request mode is 'navigate'".to_string()));
- }
+ request.mode = NetTraitsRequestMode::SameOrigin;
+ }
// Step 13.2
request.omit_origin_header.set(false);
// Step 13.3
@@ -211,17 +210,13 @@ impl Request {
}
// Step 14.5
if let Ok(parsed_referrer) = parsed_referrer {
- if parsed_referrer.cannot_be_a_base() &&
+ if (parsed_referrer.cannot_be_a_base() &&
parsed_referrer.scheme() == "about" &&
- parsed_referrer.path() == "client" {
+ parsed_referrer.path() == "client") ||
+ parsed_referrer.origin() != origin {
*request.referrer.borrow_mut() = NetTraitsRequestReferrer::Client;
} else {
// Step 14.6
- if parsed_referrer.origin() != origin {
- return Err(Error::Type(
- "RequestInit's referrer has invalid origin".to_string()));
- }
- // Step 14.7
*request.referrer.borrow_mut() = NetTraitsRequestReferrer::ReferrerUrl(parsed_referrer);
}
}
@@ -576,7 +571,7 @@ impl RequestMethods for Request {
let referrer = r.referrer.borrow();
USVString(match &*referrer {
&NetTraitsRequestReferrer::NoReferrer => String::from("no-referrer"),
- &NetTraitsRequestReferrer::Client => String::from("client"),
+ &NetTraitsRequestReferrer::Client => String::from("about:client"),
&NetTraitsRequestReferrer::ReferrerUrl(ref u) => {
let u_c = u.clone();
u_c.into_string()