diff options
author | Jyotsna Prakash <jyotsna.prakash@gmail.com> | 2017-06-21 20:34:21 -0700 |
---|---|---|
committer | Jyotsna Prakash <jyotsna.prakash@gmail.com> | 2017-06-22 10:04:06 -0700 |
commit | 433cd90bc305c74107c93fc04689239620ba22a8 (patch) | |
tree | f55768070c839b5ad8cc155055c9c0b788813cc7 /components/script | |
parent | dfc44a0d35a1905247cddb926c99e87000b96b59 (diff) | |
download | servo-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.rs | 8 | ||||
-rw-r--r-- | components/script/dom/htmliframeelement.rs | 2 | ||||
-rw-r--r-- | components/script/dom/permissions.rs | 4 | ||||
-rw-r--r-- | components/script/dom/window.rs | 2 |
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; } |