diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index bf3ff02487c..1910e119c1b 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -76,7 +76,9 @@ impl HTMLIFrameElement {
self.sandbox.get().is_some()
}
- pub fn get_url(&self) -> Option {
+ /// ,
+ /// step 1.
+ fn get_url(&self) -> Url {
let element = self.upcast::();
element.get_attribute(&ns!(), &atom!("src")).and_then(|src| {
let url = src.value();
@@ -85,7 +87,7 @@ impl HTMLIFrameElement {
} else {
document_from_node(self).base_url().join(&url).ok()
}
- })
+ }).unwrap_or_else(|| Url::parse("about:blank").unwrap())
}
pub fn generate_new_subpage_id(&self) -> (SubpageId, Option) {
@@ -144,10 +146,7 @@ impl HTMLIFrameElement {
}
pub fn process_the_iframe_attributes(&self) {
- let url = match self.get_url() {
- Some(url) => url,
- None => Url::parse("about:blank").unwrap(),
- };
+ let url = self.get_url();
// TODO - loaddata here should have referrer info (not None, None)
self.navigate_or_reload_child_browsing_context(Some(LoadData::new(url, None, None)));
@@ -430,10 +429,7 @@ impl HTMLIFrameElementMethods for HTMLIFrameElement {
// https://html.spec.whatwg.org/multipage/#dom-iframe-contentdocument
fn GetContentDocument(&self) -> Option> {
self.GetContentWindow().and_then(|window| {
- let self_url = match self.get_url() {
- Some(self_url) => self_url,
- None => return None,
- };
+ let self_url = self.get_url();
let win_url = window_from_node(self).get_url();
if UrlHelper::SameOrigin(&self_url, &win_url) {
@@ -585,11 +581,10 @@ impl VirtualMethods for HTMLIFrameElement {
// Since most of this cleanup doesn't happen on same-origin
// iframes, and since that would cause a deadlock, don't do it.
let ConstellationChan(ref chan) = *window.constellation_chan();
- let same_origin = if let Some(self_url) = self.get_url() {
+ let same_origin = {
+ let self_url = self.get_url();
let win_url = window_from_node(self).get_url();
UrlHelper::SameOrigin(&self_url, &win_url)
- } else {
- false
};
let (sender, receiver) = if same_origin {
(None, None)