aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/document.rs27
-rw-r--r--components/script/dom/domimplementation.rs1
-rw-r--r--components/script/dom/domparser.rs2
-rw-r--r--components/script/dom/node.rs3
-rw-r--r--components/script/dom/xmldocument.rs1
-rw-r--r--components/script/dom/xmlhttprequest.rs1
6 files changed, 28 insertions, 7 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 44a8e2231ea..09d58c55e1e 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -1633,7 +1633,8 @@ impl Document {
last_modified: Option<String>,
source: DocumentSource,
doc_loader: DocumentLoader,
- referrer: Option<String>)
+ referrer: Option<String>,
+ referrer_policy: Option<ReferrerPolicy>)
-> Document {
let url = url.unwrap_or_else(|| Url::parse("about:blank").unwrap());
@@ -1652,6 +1653,17 @@ impl Document {
Origin::opaque_identifier()
};
+ // TODO: we currently default to Some(NoReferrer) instead of None (i.e. unset)
+ // for an important reason. Many of the methods by which a referrer policy is communicated
+ // are currently unimplemented, and so in such cases we may be ignoring the desired policy.
+ // If the default were left unset, then in Step 7 of the Fetch algorithm we adopt
+ // no-referrer-when-downgrade. However, since we are potentially ignoring a stricter
+ // referrer policy, this might be passing too much info. Hence, we default to the
+ // strictest policy, which is no-referrer.
+ // Once other delivery methods are implemented, make the unset case really
+ // unset (i.e. None).
+ let referrer_policy = referrer_policy.or(Some(ReferrerPolicy::NoReferrer));
+
Document {
node: Node::new_document_node(),
window: JS::from_ref(window),
@@ -1718,9 +1730,8 @@ impl Document {
https_state: Cell::new(HttpsState::None),
touchpad_pressure_phase: Cell::new(TouchpadPressurePhase::BeforeClick),
origin: origin,
- //TODO - setting this for now so no Referer header set
- referrer_policy: Cell::new(Some(ReferrerPolicy::NoReferrer)),
referrer: referrer,
+ referrer_policy: Cell::new(referrer_policy),
}
}
@@ -1738,6 +1749,7 @@ impl Document {
None,
DocumentSource::NotFromParser,
docloader,
+ None,
None))
}
@@ -1749,7 +1761,8 @@ impl Document {
last_modified: Option<String>,
source: DocumentSource,
doc_loader: DocumentLoader,
- referrer: Option<String>)
+ referrer: Option<String>,
+ referrer_policy: Option<ReferrerPolicy>)
-> Root<Document> {
let document = reflect_dom_object(box Document::new_inherited(window,
browsing_context,
@@ -1759,7 +1772,8 @@ impl Document {
last_modified,
source,
doc_loader,
- referrer),
+ referrer,
+ referrer_policy),
GlobalRef::Window(window),
DocumentBinding::Wrap);
{
@@ -1824,6 +1838,7 @@ impl Document {
None,
DocumentSource::NotFromParser,
DocumentLoader::new(&self.loader()),
+ None,
None);
new_doc.appropriate_template_contents_owner_document.set(Some(&new_doc));
new_doc
@@ -2848,7 +2863,7 @@ pub fn determine_policy_for_token(token: &str) -> Option<ReferrerPolicy> {
let lower = token.to_lowercase();
return match lower.as_ref() {
"never" | "no-referrer" => Some(ReferrerPolicy::NoReferrer),
- "default" | "no-referrer-when-downgrade" => Some(ReferrerPolicy::NoRefWhenDowngrade),
+ "default" | "no-referrer-when-downgrade" => Some(ReferrerPolicy::NoReferrerWhenDowngrade),
"origin" => Some(ReferrerPolicy::Origin),
"same-origin" => Some(ReferrerPolicy::SameOrigin),
"origin-when-cross-origin" => Some(ReferrerPolicy::OriginWhenCrossOrigin),
diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs
index 1e29ce324b3..824cc0b88cf 100644
--- a/components/script/dom/domimplementation.rs
+++ b/components/script/dom/domimplementation.rs
@@ -130,6 +130,7 @@ impl DOMImplementationMethods for DOMImplementation {
None,
DocumentSource::NotFromParser,
loader,
+ None,
None);
{
diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs
index e47492d87e5..3964c84abcb 100644
--- a/components/script/dom/domparser.rs
+++ b/components/script/dom/domparser.rs
@@ -69,6 +69,7 @@ impl DOMParserMethods for DOMParser {
None,
DocumentSource::FromParser,
loader,
+ None,
None);
parse_html(document.r(), s, url, ParseContext::Owner(None));
document.set_ready_state(DocumentReadyState::Complete);
@@ -84,6 +85,7 @@ impl DOMParserMethods for DOMParser {
None,
DocumentSource::NotFromParser,
loader,
+ None,
None);
parse_xml(document.r(), s, url, xml::ParseContext::Owner(None));
Ok(document)
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index 03ec5496efa..5cb2ac540c4 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -1721,7 +1721,8 @@ impl Node {
let document = Document::new(window, None,
Some((*document.url()).clone()),
is_html_doc, None,
- None, DocumentSource::NotFromParser, loader, None);
+ None, DocumentSource::NotFromParser, loader,
+ None, None);
Root::upcast::<Node>(document)
},
NodeTypeId::Element(..) => {
diff --git a/components/script/dom/xmldocument.rs b/components/script/dom/xmldocument.rs
index 52ebce5f55c..5f6b6e1919c 100644
--- a/components/script/dom/xmldocument.rs
+++ b/components/script/dom/xmldocument.rs
@@ -42,6 +42,7 @@ impl XMLDocument {
last_modified,
source,
doc_loader,
+ None,
None),
}
}
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 532c4d2ec1c..ed254f8c007 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -1242,6 +1242,7 @@ impl XMLHttpRequest {
None,
DocumentSource::FromParser,
docloader,
+ None,
None)
}