aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorJyotsna Prakash <jyotsna.prakash@gmail.com>2017-06-21 20:34:21 -0700
committerJyotsna Prakash <jyotsna.prakash@gmail.com>2017-06-22 10:04:06 -0700
commit433cd90bc305c74107c93fc04689239620ba22a8 (patch)
treef55768070c839b5ad8cc155055c9c0b788813cc7 /components/script
parentdfc44a0d35a1905247cddb926c99e87000b96b59 (diff)
downloadservo-433cd90bc305c74107c93fc04689239620ba22a8.tar.gz
servo-433cd90bc305c74107c93fc04689239620ba22a8.zip
return Option from GlobalScope::current
handles the case where GlobalScope::current calls CurrentGlobalOrNull and the result is null
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/globalscope.rs8
-rw-r--r--components/script/dom/htmliframeelement.rs2
-rw-r--r--components/script/dom/permissions.rs4
-rw-r--r--components/script/dom/window.rs2
4 files changed, 10 insertions, 6 deletions
diff --git a/components/script/dom/globalscope.rs b/components/script/dom/globalscope.rs
index ce81958a2cb..3a47298c53b 100644
--- a/components/script/dom/globalscope.rs
+++ b/components/script/dom/globalscope.rs
@@ -543,12 +543,16 @@ impl GlobalScope {
///
/// ["current"]: https://html.spec.whatwg.org/multipage/#current
#[allow(unsafe_code)]
- pub fn current() -> Root<Self> {
+ pub fn current() -> Option<Root<Self>> {
unsafe {
let cx = Runtime::get();
assert!(!cx.is_null());
let global = CurrentGlobalOrNull(cx);
- global_scope_from_global(global)
+ if global.is_null() {
+ None
+ } else {
+ Some(global_scope_from_global(global))
+ }
}
}
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index 23feab87329..bde40d11a2b 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -590,7 +590,7 @@ impl HTMLIFrameElementMethods for HTMLIFrameElement {
Some(document) => document,
};
// Step 4.
- let current = GlobalScope::current().as_window().Document();
+ let current = GlobalScope::current().expect("No current global object").as_window().Document();
if !current.origin().same_origin_domain(document.origin()) {
return None;
}
diff --git a/components/script/dom/permissions.rs b/components/script/dom/permissions.rs
index b5cab2ace90..3368782d06e 100644
--- a/components/script/dom/permissions.rs
+++ b/components/script/dom/permissions.rs
@@ -241,7 +241,7 @@ impl PermissionAlgorithm for Permissions {
let state =
prompt_user(&format!("{} {} ?", REQUEST_DIALOG_MESSAGE, perm_name.clone()));
- let globalscope = GlobalScope::current();
+ let globalscope = GlobalScope::current().expect("No current global object");
globalscope.as_window()
.permission_state_invocation_results()
.borrow_mut()
@@ -266,7 +266,7 @@ pub fn get_descriptor_permission_state(permission_name: PermissionName,
// Step 1.
let settings = match env_settings_obj {
Some(env_settings_obj) => Root::from_ref(env_settings_obj),
- None => GlobalScope::current(),
+ None => GlobalScope::current().expect("No current global object"),
};
// Step 2.
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 0d4dca7d845..d560c71b3ad 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -586,7 +586,7 @@ impl WindowMethods for Window {
};
// Step 6.
let container_doc = document_from_node(container);
- let current_doc = GlobalScope::current().as_window().Document();
+ let current_doc = GlobalScope::current().expect("No current global object").as_window().Document();
if !current_doc.origin().same_origin_domain(container_doc.origin()) {
return None;
}