aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/script_thread.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-07-15 11:25:43 -0700
committerGitHub <noreply@github.com>2016-07-15 11:25:43 -0700
commitb382cc2103180f7dfd8df9c34970a95ed57a2d88 (patch)
tree9432deeb4df88f845eb8918caa2d350ef8bababb /components/script/script_thread.rs
parent175340d1461c3474b49f88131b84298b8d097d36 (diff)
parentbfda32ea0076d29788b39634e95ca7517315dceb (diff)
downloadservo-b382cc2103180f7dfd8df9c34970a95ed57a2d88.tar.gz
servo-b382cc2103180f7dfd8df9c34970a95ed57a2d88.zip
Auto merge of #12441 - aravind-pg:referrer-pol-header, r=jdm
Implement referrer policy delivery by header Adds a new `Option<ReferrerPolicy>` field to Document and sets it appropriately in `ScriptThread::load` if a Referrer-Policy header is present. r? @jdm <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #11860 - [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/12441) <!-- Reviewable:end -->
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..07779fbebd2 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::NoReferrerWhenDowngrade,
+ 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 {