aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/script_thread.rs
diff options
context:
space:
mode:
authorAravind Gollakota <aravindprasant@gmail.com>2016-07-12 23:50:00 -0700
committerAravind Gollakota <aravindprasant@gmail.com>2016-07-15 08:12:24 -0700
commit1a242d8a5001e96f2ef779409c62c0952921f0f7 (patch)
tree0229dd8860c44a9c91f1636573ec187fdb92b77b /components/script/script_thread.rs
parent920a43df956bebdc286162124020b26eb4ecdf85 (diff)
downloadservo-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.rs28
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 {