From 433cd90bc305c74107c93fc04689239620ba22a8 Mon Sep 17 00:00:00 2001 From: Jyotsna Prakash Date: Wed, 21 Jun 2017 20:34:21 -0700 Subject: return Option from GlobalScope::current handles the case where GlobalScope::current calls CurrentGlobalOrNull and the result is null --- components/script/dom/globalscope.rs | 8 ++++++-- components/script/dom/htmliframeelement.rs | 2 +- components/script/dom/permissions.rs | 4 ++-- components/script/dom/window.rs | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) (limited to 'components/script/dom') 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 { + pub fn current() -> Option> { 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; } -- cgit v1.2.3