mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Auto merge of #12416 - canaltinova:referrer, r=jdm
Implement Document.referrer <!-- Please describe your changes on the following line: --> --- <!-- 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 #12389 (github issue number if applicable). <!-- Either: --> - [X] There are tests for these changes OR - [ ] These changes do not require tests because _____ <!-- 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/12416) <!-- Reviewable:end -->
This commit is contained in:
commit
4b78b9adab
17 changed files with 55 additions and 32 deletions
|
@ -239,6 +239,8 @@ pub struct Document {
|
|||
origin: Origin,
|
||||
/// https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-states
|
||||
referrer_policy: Cell<Option<ReferrerPolicy>>,
|
||||
/// https://html.spec.whatwg.org/multipage/#dom-document-referrer
|
||||
referrer: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(JSTraceable, HeapSizeOf)]
|
||||
|
@ -1630,7 +1632,8 @@ impl Document {
|
|||
content_type: Option<DOMString>,
|
||||
last_modified: Option<String>,
|
||||
source: DocumentSource,
|
||||
doc_loader: DocumentLoader)
|
||||
doc_loader: DocumentLoader,
|
||||
referrer: Option<String>)
|
||||
-> Document {
|
||||
let url = url.unwrap_or_else(|| Url::parse("about:blank").unwrap());
|
||||
|
||||
|
@ -1717,6 +1720,7 @@ impl Document {
|
|||
origin: origin,
|
||||
//TODO - setting this for now so no Referer header set
|
||||
referrer_policy: Cell::new(Some(ReferrerPolicy::NoReferrer)),
|
||||
referrer: referrer,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1733,7 +1737,8 @@ impl Document {
|
|||
None,
|
||||
None,
|
||||
DocumentSource::NotFromParser,
|
||||
docloader))
|
||||
docloader,
|
||||
None))
|
||||
}
|
||||
|
||||
pub fn new(window: &Window,
|
||||
|
@ -1743,7 +1748,8 @@ impl Document {
|
|||
content_type: Option<DOMString>,
|
||||
last_modified: Option<String>,
|
||||
source: DocumentSource,
|
||||
doc_loader: DocumentLoader)
|
||||
doc_loader: DocumentLoader,
|
||||
referrer: Option<String>)
|
||||
-> Root<Document> {
|
||||
let document = reflect_dom_object(box Document::new_inherited(window,
|
||||
browsing_context,
|
||||
|
@ -1752,7 +1758,8 @@ impl Document {
|
|||
content_type,
|
||||
last_modified,
|
||||
source,
|
||||
doc_loader),
|
||||
doc_loader,
|
||||
referrer),
|
||||
GlobalRef::Window(window),
|
||||
DocumentBinding::Wrap);
|
||||
{
|
||||
|
@ -1816,7 +1823,8 @@ impl Document {
|
|||
None,
|
||||
None,
|
||||
DocumentSource::NotFromParser,
|
||||
DocumentLoader::new(&self.loader()));
|
||||
DocumentLoader::new(&self.loader()),
|
||||
None);
|
||||
new_doc.appropriate_template_contents_owner_document.set(Some(&new_doc));
|
||||
new_doc
|
||||
})
|
||||
|
@ -1935,6 +1943,14 @@ impl DocumentMethods for Document {
|
|||
}
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-document-referrer
|
||||
fn Referrer(&self) -> DOMString {
|
||||
match self.referrer {
|
||||
Some(ref referrer) => DOMString::from(referrer.to_string()),
|
||||
None => DOMString::new()
|
||||
}
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#dom-document-documenturi
|
||||
fn DocumentURI(&self) -> USVString {
|
||||
self.URL()
|
||||
|
|
|
@ -129,7 +129,8 @@ impl DOMImplementationMethods for DOMImplementation {
|
|||
None,
|
||||
None,
|
||||
DocumentSource::NotFromParser,
|
||||
loader);
|
||||
loader,
|
||||
None);
|
||||
|
||||
{
|
||||
// Step 3.
|
||||
|
|
|
@ -68,7 +68,8 @@ impl DOMParserMethods for DOMParser {
|
|||
Some(content_type),
|
||||
None,
|
||||
DocumentSource::FromParser,
|
||||
loader);
|
||||
loader,
|
||||
None);
|
||||
parse_html(document.r(), s, url, ParseContext::Owner(None));
|
||||
document.set_ready_state(DocumentReadyState::Complete);
|
||||
Ok(document)
|
||||
|
@ -82,7 +83,8 @@ impl DOMParserMethods for DOMParser {
|
|||
Some(content_type),
|
||||
None,
|
||||
DocumentSource::NotFromParser,
|
||||
loader);
|
||||
loader,
|
||||
None);
|
||||
parse_xml(document.r(), s, url, xml::ParseContext::Owner(None));
|
||||
Ok(document)
|
||||
}
|
||||
|
|
|
@ -1721,7 +1721,7 @@ impl Node {
|
|||
let document = Document::new(window, None,
|
||||
Some((*document.url()).clone()),
|
||||
is_html_doc, None,
|
||||
None, DocumentSource::NotFromParser, loader);
|
||||
None, DocumentSource::NotFromParser, loader, None);
|
||||
Root::upcast::<Node>(document)
|
||||
},
|
||||
NodeTypeId::Element(..) => {
|
||||
|
|
|
@ -82,7 +82,7 @@ partial /*sealed*/ interface Document {
|
|||
[/*PutForwards=href, */Unforgeable]
|
||||
readonly attribute Location? location;
|
||||
readonly attribute DOMString domain;
|
||||
// readonly attribute DOMString referrer;
|
||||
readonly attribute DOMString referrer;
|
||||
[Throws]
|
||||
attribute DOMString cookie;
|
||||
readonly attribute DOMString lastModified;
|
||||
|
|
|
@ -41,7 +41,8 @@ impl XMLDocument {
|
|||
content_type,
|
||||
last_modified,
|
||||
source,
|
||||
doc_loader),
|
||||
doc_loader,
|
||||
None),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1234,7 +1234,9 @@ impl XMLHttpRequest {
|
|||
is_html_document,
|
||||
content_type,
|
||||
None,
|
||||
DocumentSource::FromParser, docloader)
|
||||
DocumentSource::FromParser,
|
||||
docloader,
|
||||
None)
|
||||
}
|
||||
|
||||
fn filter_response_headers(&self) -> Headers {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue