mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Make Document::url return the page's URL to avoid stale URLs after redirects.
This commit is contained in:
parent
19fbb9e568
commit
ae2b74c783
4 changed files with 8 additions and 7 deletions
|
@ -170,7 +170,7 @@ pub trait DocumentHelpers<'a> {
|
||||||
fn window(self) -> Temporary<Window>;
|
fn window(self) -> Temporary<Window>;
|
||||||
fn encoding_name(self) -> Ref<'a, DOMString>;
|
fn encoding_name(self) -> Ref<'a, DOMString>;
|
||||||
fn is_html_document(self) -> bool;
|
fn is_html_document(self) -> bool;
|
||||||
fn url(self) -> &'a Url;
|
fn url(self) -> Url;
|
||||||
fn quirks_mode(self) -> QuirksMode;
|
fn quirks_mode(self) -> QuirksMode;
|
||||||
fn set_quirks_mode(self, mode: QuirksMode);
|
fn set_quirks_mode(self, mode: QuirksMode);
|
||||||
fn set_last_modified(self, value: DOMString);
|
fn set_last_modified(self, value: DOMString);
|
||||||
|
@ -206,8 +206,9 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
|
||||||
self.is_html_document
|
self.is_html_document
|
||||||
}
|
}
|
||||||
|
|
||||||
fn url(self) -> &'a Url {
|
fn url(self) -> Url {
|
||||||
&self.extended_deref().url
|
let window = self.window().root();
|
||||||
|
window.page().get_url()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn quirks_mode(self) -> QuirksMode {
|
fn quirks_mode(self) -> QuirksMode {
|
||||||
|
|
|
@ -777,7 +777,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
|
||||||
let base = doc.r().url();
|
let base = doc.r().url();
|
||||||
// https://html.spec.whatwg.org/multipage/infrastructure.html#reflect
|
// https://html.spec.whatwg.org/multipage/infrastructure.html#reflect
|
||||||
// XXXManishearth this doesn't handle `javascript:` urls properly
|
// XXXManishearth this doesn't handle `javascript:` urls properly
|
||||||
match UrlParser::new().base_url(base).parse(url.as_slice()) {
|
match UrlParser::new().base_url(&base).parse(url.as_slice()) {
|
||||||
Ok(parsed) => parsed.serialize(),
|
Ok(parsed) => parsed.serialize(),
|
||||||
Err(_) => "".to_owned()
|
Err(_) => "".to_owned()
|
||||||
}
|
}
|
||||||
|
@ -1174,7 +1174,7 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
|
||||||
// Modifying the `style` attribute might change style.
|
// Modifying the `style` attribute might change style.
|
||||||
let node: JSRef<Node> = NodeCast::from_ref(*self);
|
let node: JSRef<Node> = NodeCast::from_ref(*self);
|
||||||
let doc = document_from_node(*self).root();
|
let doc = document_from_node(*self).root();
|
||||||
let base_url = doc.r().url().clone();
|
let base_url = doc.r().url();
|
||||||
let value = attr.value();
|
let value = attr.value();
|
||||||
let style = Some(parse_style_attribute(value.as_slice(), &base_url));
|
let style = Some(parse_style_attribute(value.as_slice(), &base_url));
|
||||||
*self.style_attribute.borrow_mut() = style;
|
*self.style_attribute.borrow_mut() = style;
|
||||||
|
|
|
@ -180,7 +180,7 @@ impl<'a> HTMLFormElementHelpers for JSRef<'a, HTMLFormElement> {
|
||||||
}
|
}
|
||||||
// TODO: Resolve the url relative to the submitter element
|
// TODO: Resolve the url relative to the submitter element
|
||||||
// Step 10-15
|
// Step 10-15
|
||||||
let action_components = UrlParser::new().base_url(base).parse(action.as_slice()).unwrap_or(base.clone());
|
let action_components = UrlParser::new().base_url(&base).parse(action.as_slice()).unwrap_or(base);
|
||||||
let _action = action_components.serialize();
|
let _action = action_components.serialize();
|
||||||
let scheme = action_components.scheme.clone();
|
let scheme = action_components.scheme.clone();
|
||||||
let enctype = submitter.enctype();
|
let enctype = submitter.enctype();
|
||||||
|
|
|
@ -1574,7 +1574,7 @@ impl Node {
|
||||||
false => IsHTMLDocument::NonHTMLDocument,
|
false => IsHTMLDocument::NonHTMLDocument,
|
||||||
};
|
};
|
||||||
let window = document.window().root();
|
let window = document.window().root();
|
||||||
let document = Document::new(window.r(), Some(document.url().clone()),
|
let document = Document::new(window.r(), Some(document.url()),
|
||||||
is_html_doc, None,
|
is_html_doc, None,
|
||||||
DocumentSource::NotFromParser);
|
DocumentSource::NotFromParser);
|
||||||
NodeCast::from_temporary(document)
|
NodeCast::from_temporary(document)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue