mirror of
https://github.com/servo/servo.git
synced 2025-07-30 18:50:36 +01:00
Simplify handling of the referrer policy header in ScriptThread::load().
This commit is contained in:
parent
e4a1cb6f87
commit
5b97632132
2 changed files with 31 additions and 24 deletions
|
@ -35,7 +35,7 @@ extern crate websocket;
|
||||||
use cookie_rs::Cookie;
|
use cookie_rs::Cookie;
|
||||||
use filemanager_thread::FileManagerThreadMsg;
|
use filemanager_thread::FileManagerThreadMsg;
|
||||||
use heapsize::HeapSizeOf;
|
use heapsize::HeapSizeOf;
|
||||||
use hyper::header::{ContentType, Headers};
|
use hyper::header::{ContentType, Headers, ReferrerPolicy as ReferrerPolicyHeader};
|
||||||
use hyper::http::RawStatus;
|
use hyper::http::RawStatus;
|
||||||
use hyper::mime::{Attr, Mime};
|
use hyper::mime::{Attr, Mime};
|
||||||
use hyper_serde::Serde;
|
use hyper_serde::Serde;
|
||||||
|
@ -133,6 +133,29 @@ pub enum ReferrerPolicy {
|
||||||
StrictOriginWhenCrossOrigin,
|
StrictOriginWhenCrossOrigin,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a> From<&'a ReferrerPolicyHeader> for ReferrerPolicy {
|
||||||
|
fn from(policy: &'a ReferrerPolicyHeader) -> Self {
|
||||||
|
match *policy {
|
||||||
|
ReferrerPolicyHeader::NoReferrer =>
|
||||||
|
ReferrerPolicy::NoReferrer,
|
||||||
|
ReferrerPolicyHeader::NoReferrerWhenDowngrade =>
|
||||||
|
ReferrerPolicy::NoReferrerWhenDowngrade,
|
||||||
|
ReferrerPolicyHeader::SameOrigin =>
|
||||||
|
ReferrerPolicy::SameOrigin,
|
||||||
|
ReferrerPolicyHeader::Origin =>
|
||||||
|
ReferrerPolicy::Origin,
|
||||||
|
ReferrerPolicyHeader::OriginWhenCrossOrigin =>
|
||||||
|
ReferrerPolicy::OriginWhenCrossOrigin,
|
||||||
|
ReferrerPolicyHeader::UnsafeUrl =>
|
||||||
|
ReferrerPolicy::UnsafeUrl,
|
||||||
|
ReferrerPolicyHeader::StrictOrigin =>
|
||||||
|
ReferrerPolicy::StrictOrigin,
|
||||||
|
ReferrerPolicyHeader::StrictOriginWhenCrossOrigin =>
|
||||||
|
ReferrerPolicy::StrictOriginWhenCrossOrigin,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize)]
|
#[derive(Deserialize, Serialize)]
|
||||||
pub enum FetchResponseMsg {
|
pub enum FetchResponseMsg {
|
||||||
// todo: should have fields for transmitted/total bytes
|
// todo: should have fields for transmitted/total bytes
|
||||||
|
|
|
@ -57,7 +57,7 @@ use dom::window::{ReflowReason, Window};
|
||||||
use dom::worker::TrustedWorkerAddress;
|
use dom::worker::TrustedWorkerAddress;
|
||||||
use euclid::Rect;
|
use euclid::Rect;
|
||||||
use euclid::point::Point2D;
|
use euclid::point::Point2D;
|
||||||
use hyper::header::{ContentType, HttpDate, LastModified};
|
use hyper::header::{ContentType, HttpDate, LastModified, Headers};
|
||||||
use hyper::header::ReferrerPolicy as ReferrerPolicyHeader;
|
use hyper::header::ReferrerPolicy as ReferrerPolicyHeader;
|
||||||
use hyper::mime::{Mime, SubLevel, TopLevel};
|
use hyper::mime::{Mime, SubLevel, TopLevel};
|
||||||
use hyper_serde::Serde;
|
use hyper_serde::Serde;
|
||||||
|
@ -97,6 +97,7 @@ use servo_config::opts;
|
||||||
use servo_url::ServoUrl;
|
use servo_url::ServoUrl;
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
use std::collections::{hash_map, HashMap, HashSet};
|
use std::collections::{hash_map, HashMap, HashSet};
|
||||||
|
use std::ops::Deref;
|
||||||
use std::option::Option;
|
use std::option::Option;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
@ -1761,28 +1762,11 @@ impl ScriptThread {
|
||||||
None => None,
|
None => None,
|
||||||
};
|
};
|
||||||
|
|
||||||
let referrer_policy = if let Some(headers) = metadata.headers {
|
let referrer_policy = metadata.headers
|
||||||
headers.get::<ReferrerPolicyHeader>().map(|h| match *h {
|
.as_ref()
|
||||||
ReferrerPolicyHeader::NoReferrer =>
|
.map(Serde::deref)
|
||||||
ReferrerPolicy::NoReferrer,
|
.and_then(Headers::get::<ReferrerPolicyHeader>)
|
||||||
ReferrerPolicyHeader::NoReferrerWhenDowngrade =>
|
.map(ReferrerPolicy::from);
|
||||||
ReferrerPolicy::NoReferrerWhenDowngrade,
|
|
||||||
ReferrerPolicyHeader::SameOrigin =>
|
|
||||||
ReferrerPolicy::SameOrigin,
|
|
||||||
ReferrerPolicyHeader::Origin =>
|
|
||||||
ReferrerPolicy::Origin,
|
|
||||||
ReferrerPolicyHeader::OriginWhenCrossOrigin =>
|
|
||||||
ReferrerPolicy::OriginWhenCrossOrigin,
|
|
||||||
ReferrerPolicyHeader::UnsafeUrl =>
|
|
||||||
ReferrerPolicy::UnsafeUrl,
|
|
||||||
ReferrerPolicyHeader::StrictOrigin =>
|
|
||||||
ReferrerPolicy::StrictOrigin,
|
|
||||||
ReferrerPolicyHeader::StrictOriginWhenCrossOrigin =>
|
|
||||||
ReferrerPolicy::StrictOriginWhenCrossOrigin,
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
};
|
|
||||||
|
|
||||||
let document = Document::new(&window,
|
let document = Document::new(&window,
|
||||||
Some(&browsing_context),
|
Some(&browsing_context),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue