aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/document.rs7
-rw-r--r--components/script/dom/htmlanchorelement.rs2
-rw-r--r--components/script/dom/windowproxy.rs10
3 files changed, 12 insertions, 7 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index f548907d6a2..6f1656d1baf 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -579,6 +579,13 @@ impl Document {
if let Some(browsing_context) = self.browsing_context() {
// Step 1: If document is an iframe srcdoc document, then return the
// document base URL of document's browsing context's container document.
+ let container_base_url = browsing_context
+ .parent()
+ .and_then(|parent| parent.document())
+ .map(|document| document.base_url());
+ if document_url.as_str() == "about:srcdoc" && container_base_url.is_some() {
+ return container_base_url.unwrap();
+ }
// Step 2: If document's URL is about:blank, and document's browsing
// context's creator base URL is non-null, then return that creator base URL.
diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs
index a0f939b93ad..f61d466afd5 100644
--- a/components/script/dom/htmlanchorelement.rs
+++ b/components/script/dom/htmlanchorelement.rs
@@ -637,7 +637,7 @@ pub fn follow_hyperlink(subject: &Element, hyperlink_suffix: Option<String>) {
if let Some(suffix) = hyperlink_suffix {
href.push_str(&suffix);
}
- let url = match document.url().join(&href) {
+ let url = match document.base_url().join(&href) {
Ok(url) => url,
Err(_) => return,
};
diff --git a/components/script/dom/windowproxy.rs b/components/script/dom/windowproxy.rs
index ba2797f6183..9aac99dc447 100644
--- a/components/script/dom/windowproxy.rs
+++ b/components/script/dom/windowproxy.rs
@@ -731,12 +731,10 @@ impl CreatorBrowsingContextInfo {
parent: Option<&WindowProxy>,
opener: Option<&WindowProxy>,
) -> CreatorBrowsingContextInfo {
- let creator = if parent.is_some() {
- parent.unwrap().document()
- } else if opener.is_some() {
- opener.unwrap().document()
- } else {
- None
+ let creator = match (parent, opener) {
+ (Some(parent), _) => parent.document(),
+ (None, Some(opener)) => opener.document(),
+ (None, None) => None,
};
let base_url = creator.as_deref().map(|document| document.base_url());