diff options
author | Aravind Gollakota <aravindprasant@gmail.com> | 2016-07-12 23:50:00 -0700 |
---|---|---|
committer | Aravind Gollakota <aravindprasant@gmail.com> | 2016-07-15 08:12:24 -0700 |
commit | 1a242d8a5001e96f2ef779409c62c0952921f0f7 (patch) | |
tree | 0229dd8860c44a9c91f1636573ec187fdb92b77b /components/script/script_thread.rs | |
parent | 920a43df956bebdc286162124020b26eb4ecdf85 (diff) | |
download | servo-1a242d8a5001e96f2ef779409c62c0952921f0f7.tar.gz servo-1a242d8a5001e96f2ef779409c62c0952921f0f7.zip |
script: Obtain referrer policy from header
Diffstat (limited to 'components/script/script_thread.rs')
-rw-r--r-- | components/script/script_thread.rs | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index aeed396fbb1..1c58226a718 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -51,8 +51,8 @@ use dom::worker::TrustedWorkerAddress; use euclid::Rect; use euclid::point::Point2D; use gfx_traits::LayerId; -use hyper::header::{ContentType, HttpDate}; -use hyper::header::{Headers, LastModified}; +use hyper::header::{ContentType, Headers, HttpDate, LastModified}; +use hyper::header::{ReferrerPolicy as ReferrerPolicyHeader}; use hyper::method::Method; use hyper::mime::{Mime, SubLevel, TopLevel}; use ipc_channel::ipc::{self, IpcSender}; @@ -65,7 +65,7 @@ use js::jsval::UndefinedValue; use js::rust::Runtime; use mem::heap_size_of_self_and_children; use msg::constellation_msg::{FrameType, LoadData, PanicMsg, PipelineId, PipelineNamespace}; -use msg::constellation_msg::{SubpageId, WindowSizeType}; +use msg::constellation_msg::{ReferrerPolicy, SubpageId, WindowSizeType}; use net_traits::LoadData as NetLoadData; use net_traits::bluetooth_thread::BluetoothMethodMsg; use net_traits::image_cache_thread::{ImageCacheChan, ImageCacheResult, ImageCacheThread}; @@ -1716,6 +1716,25 @@ impl ScriptThread { None => None, }; + let referrer_policy = if let Some(headers) = metadata.headers { + headers.get::<ReferrerPolicyHeader>().map(|h| match *h { + ReferrerPolicyHeader::NoReferrer => + ReferrerPolicy::NoReferrer, + ReferrerPolicyHeader::NoReferrerWhenDowngrade => + ReferrerPolicy::NoRefWhenDowngrade, + ReferrerPolicyHeader::SameOrigin => + ReferrerPolicy::SameOrigin, + ReferrerPolicyHeader::Origin => + ReferrerPolicy::Origin, + ReferrerPolicyHeader::OriginWhenCrossOrigin => + ReferrerPolicy::OriginWhenCrossOrigin, + ReferrerPolicyHeader::UnsafeUrl => + ReferrerPolicy::UnsafeUrl, + }) + } else { + None + }; + let document = Document::new(window.r(), Some(&browsing_context), Some(final_url.clone()), @@ -1724,7 +1743,8 @@ impl ScriptThread { last_modified, DocumentSource::FromParser, loader, - referrer); + referrer, + referrer_policy); if using_new_context { browsing_context.init(&document); } else { |