diff options
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/document.rs | 27 | ||||
-rw-r--r-- | components/script/dom/domimplementation.rs | 1 | ||||
-rw-r--r-- | components/script/dom/domparser.rs | 2 | ||||
-rw-r--r-- | components/script/dom/node.rs | 3 | ||||
-rw-r--r-- | components/script/dom/xmldocument.rs | 1 | ||||
-rw-r--r-- | components/script/dom/xmlhttprequest.rs | 1 |
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) } |