aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/htmliframeelement.rs8
-rw-r--r--components/script/dom/webidls/BrowserElement.webidl8
-rw-r--r--components/script/dom/window.rs10
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,
}
}