diff options
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/htmliframeelement.rs | 8 | ||||
-rw-r--r-- | components/script/dom/webidls/BrowserElement.webidl | 8 | ||||
-rw-r--r-- | components/script/dom/window.rs | 10 |
3 files changed, 16 insertions, 10 deletions
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index a4d1958445b..552730a2bb3 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -437,8 +437,12 @@ impl HTMLIFrameElementMethods for HTMLIFrameElement { // https://developer.mozilla.org/en-US/docs/Web/API/Using_the_Browser_API // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-mozbrowser fn Mozbrowser(&self) -> bool { - let element = self.upcast::<Element>(); - element.has_attribute(&atom!("mozbrowser")) + if window_from_node(self).is_mozbrowser() { + let element = self.upcast::<Element>(); + element.has_attribute(&atom!("mozbrowser")) + } else { + false + } } // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-mozbrowser diff --git a/components/script/dom/webidls/BrowserElement.webidl b/components/script/dom/webidls/BrowserElement.webidl index 9bb34b90a95..2767fa15071 100644 --- a/components/script/dom/webidls/BrowserElement.webidl +++ b/components/script/dom/webidls/BrowserElement.webidl @@ -146,16 +146,16 @@ interface BrowserElementPrivileged { // unsigned long count, // unsigned long modifiers); - [Throws] + [Func="Window::global_is_mozbrowser", Throws] void goBack(); - [Throws] + [Func="Window::global_is_mozbrowser", Throws] void goForward(); - [Throws] + [Func="Window::global_is_mozbrowser", Throws] void reload(optional boolean hardReload = false); - [Throws] + [Func="Window::global_is_mozbrowser", Throws] void stop(); //[Throws, diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 0f21139c324..4862cb83c9e 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -1459,15 +1459,17 @@ impl Window { }) } + /// Returns whether this window is mozbrowser. + pub fn is_mozbrowser(&self) -> bool { + mozbrowser_enabled() && self.parent_info().is_none() + } + /// Returns whether mozbrowser is enabled and `obj` has been created /// in a top-level `Window` global. #[allow(unsafe_code)] pub unsafe fn global_is_mozbrowser(_: *mut JSContext, obj: HandleObject) -> bool { - if !mozbrowser_enabled() { - return false; - } match global_root_from_object(obj.get()).r() { - GlobalRef::Window(window) => window.parent_info().is_none(), + GlobalRef::Window(window) => window.is_mozbrowser(), _ => false, } } |