aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/xmlhttprequest.rs
diff options
context:
space:
mode:
authorRebecca <rebstar6@gmail.com>2016-05-21 18:02:45 -0400
committerRebecca <rebstar6@gmail.com>2016-06-02 21:48:09 -0400
commit687d0cd7c393ad95209a1220ff728700d9929ac6 (patch)
tree85d30dfcba553d331b900afd1722af9770d3b47e /components/script/dom/xmlhttprequest.rs
parentd0f5a5fd747e42da0863434f6ede10bafed3a509 (diff)
downloadservo-687d0cd7c393ad95209a1220ff728700d9929ac6.tar.gz
servo-687d0cd7c393ad95209a1220ff728700d9929ac6.zip
Add meta-referrer support for documents
Diffstat (limited to 'components/script/dom/xmlhttprequest.rs')
-rw-r--r--components/script/dom/xmlhttprequest.rs19
1 files changed, 16 insertions, 3 deletions
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 743a06ff5ec..bb5c32ed64e 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -148,10 +148,20 @@ pub struct XMLHttpRequest {
fetch_time: Cell<i64>,
generation_id: Cell<GenerationId>,
response_status: Cell<Result<(), ()>>,
+ referrer_url: Option<Url>,
+ referrer_policy: Option<ReferrerPolicy>,
}
impl XMLHttpRequest {
fn new_inherited(global: GlobalRef) -> XMLHttpRequest {
+ //TODO - update this when referrer policy implemented for workers
+ let (referrer_url, referrer_policy) = if let GlobalRef::Window(window) = global {
+ let document = window.Document();
+ (Some(document.url().clone()), document.get_referrer_policy())
+ } else {
+ (None, None)
+ };
+
XMLHttpRequest {
eventtarget: XMLHttpRequestEventTarget::new_inherited(),
ready_state: Cell::new(XMLHttpRequestState::Unsent),
@@ -183,6 +193,8 @@ impl XMLHttpRequest {
fetch_time: Cell::new(0),
generation_id: Cell::new(GenerationId(0)),
response_status: Cell::new(Ok(())),
+ referrer_url: referrer_url,
+ referrer_policy: referrer_policy,
}
}
pub fn new(global: GlobalRef) -> Root<XMLHttpRequest> {
@@ -297,10 +309,10 @@ impl XMLHttpRequest {
impl LoadOrigin for XMLHttpRequest {
fn referrer_url(&self) -> Option<Url> {
- None
+ return self.referrer_url.clone();
}
fn referrer_policy(&self) -> Option<ReferrerPolicy> {
- None
+ return self.referrer_policy;
}
fn request_source(&self) -> RequestSource {
if self.sync.get() {
@@ -592,11 +604,12 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
// Step 5
let global = self.global();
- //TODO - set referrer_policy/referrer_url in load_data
+
let mut load_data =
LoadData::new(LoadContext::Browsing,
self.request_url.borrow().clone().unwrap(),
self);
+
if load_data.url.origin().ne(&global.r().get_url().origin()) {
load_data.credentials_flag = self.WithCredentials();
}