mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Parse location url relative to the entry settings object
This commit is contained in:
parent
7867bb6429
commit
1c78728ff1
1 changed files with 6 additions and 7 deletions
|
@ -9,7 +9,6 @@ use crate::dom::bindings::inheritance::Castable;
|
||||||
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
|
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
|
||||||
use crate::dom::bindings::root::{Dom, DomRoot};
|
use crate::dom::bindings::root::{Dom, DomRoot};
|
||||||
use crate::dom::bindings::str::USVString;
|
use crate::dom::bindings::str::USVString;
|
||||||
use crate::dom::document::Document;
|
|
||||||
use crate::dom::globalscope::GlobalScope;
|
use crate::dom::globalscope::GlobalScope;
|
||||||
use crate::dom::urlhelper::UrlHelper;
|
use crate::dom::urlhelper::UrlHelper;
|
||||||
use crate::dom::window::Window;
|
use crate::dom::window::Window;
|
||||||
|
@ -66,7 +65,7 @@ impl Location {
|
||||||
fn check_same_origin_domain(&self) -> ErrorResult {
|
fn check_same_origin_domain(&self) -> ErrorResult {
|
||||||
let this_document = self.window.Document();
|
let this_document = self.window.Document();
|
||||||
if self
|
if self
|
||||||
.entry_document()
|
.entry_settings_object()
|
||||||
.origin()
|
.origin()
|
||||||
.same_origin_domain(this_document.origin())
|
.same_origin_domain(this_document.origin())
|
||||||
{
|
{
|
||||||
|
@ -76,8 +75,8 @@ impl Location {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn entry_document(&self) -> DomRoot<Document> {
|
fn entry_settings_object(&self) -> DomRoot<GlobalScope> {
|
||||||
GlobalScope::entry().as_window().Document()
|
GlobalScope::entry()
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-location-reload
|
// https://html.spec.whatwg.org/multipage/#dom-location-reload
|
||||||
|
@ -104,7 +103,7 @@ impl LocationMethods for Location {
|
||||||
self.check_same_origin_domain()?;
|
self.check_same_origin_domain()?;
|
||||||
// Step 3: Parse url relative to the entry settings object. If that failed,
|
// Step 3: Parse url relative to the entry settings object. If that failed,
|
||||||
// throw a "SyntaxError" DOMException.
|
// throw a "SyntaxError" DOMException.
|
||||||
let base_url = self.entry_document().url();
|
let base_url = self.entry_settings_object().api_base_url();
|
||||||
let url = match base_url.join(&url.0) {
|
let url = match base_url.join(&url.0) {
|
||||||
Ok(url) => url,
|
Ok(url) => url,
|
||||||
Err(_) => return Err(Error::Syntax),
|
Err(_) => return Err(Error::Syntax),
|
||||||
|
@ -131,7 +130,7 @@ impl LocationMethods for Location {
|
||||||
if self.window.has_document() {
|
if self.window.has_document() {
|
||||||
// Step 2: Parse url relative to the entry settings object. If that failed,
|
// Step 2: Parse url relative to the entry settings object. If that failed,
|
||||||
// throw a "SyntaxError" DOMException.
|
// throw a "SyntaxError" DOMException.
|
||||||
let base_url = self.entry_document().url();
|
let base_url = self.entry_settings_object().api_base_url();
|
||||||
let url = match base_url.join(&url.0) {
|
let url = match base_url.join(&url.0) {
|
||||||
Ok(url) => url,
|
Ok(url) => url,
|
||||||
Err(_) => return Err(Error::Syntax),
|
Err(_) => return Err(Error::Syntax),
|
||||||
|
@ -253,7 +252,7 @@ impl LocationMethods for Location {
|
||||||
// Note: no call to self.check_same_origin_domain()
|
// Note: no call to self.check_same_origin_domain()
|
||||||
// Step 2: Parse the given value relative to the entry settings object.
|
// Step 2: Parse the given value relative to the entry settings object.
|
||||||
// If that failed, throw a TypeError exception.
|
// If that failed, throw a TypeError exception.
|
||||||
let base_url = self.entry_document().url();
|
let base_url = self.entry_settings_object().api_base_url();
|
||||||
let url = match base_url.join(&value.0) {
|
let url = match base_url.join(&value.0) {
|
||||||
Ok(url) => url,
|
Ok(url) => url,
|
||||||
Err(e) => return Err(Error::Type(format!("Couldn't parse URL: {}", e))),
|
Err(e) => return Err(Error::Type(format!("Couldn't parse URL: {}", e))),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue