diff options
Diffstat (limited to 'components/script/dom/serviceworkercontainer.rs')
-rw-r--r-- | components/script/dom/serviceworkercontainer.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/components/script/dom/serviceworkercontainer.rs b/components/script/dom/serviceworkercontainer.rs index abeb69f2ea3..0947b9c0a1f 100644 --- a/components/script/dom/serviceworkercontainer.rs +++ b/components/script/dom/serviceworkercontainer.rs @@ -5,12 +5,12 @@ use dom::bindings::codegen::Bindings::ServiceWorkerContainerBinding::{ServiceWorkerContainerMethods, Wrap}; use dom::bindings::codegen::Bindings::ServiceWorkerContainerBinding::RegistrationOptions; use dom::bindings::error::{Error, Fallible}; -use dom::bindings::global::GlobalRef; use dom::bindings::inheritance::Castable; use dom::bindings::js::{JS, MutNullableHeap, Root}; use dom::bindings::reflector::{Reflectable, reflect_dom_object}; use dom::bindings::str::USVString; use dom::eventtarget::EventTarget; +use dom::globalscope::GlobalScope; use dom::serviceworker::ServiceWorker; use dom::serviceworkerregistration::ServiceWorkerRegistration; use script_thread::ScriptThread; @@ -31,7 +31,7 @@ impl ServiceWorkerContainer { } } - pub fn new(global: GlobalRef) -> Root<ServiceWorkerContainer> { + pub fn new(global: &GlobalScope) -> Root<ServiceWorkerContainer> { reflect_dom_object(box ServiceWorkerContainer::new_inherited(), global, Wrap) } } @@ -58,8 +58,9 @@ impl ServiceWorkerContainerMethods for ServiceWorkerContainer { script_url: USVString, options: &RegistrationOptions) -> Fallible<Root<ServiceWorkerRegistration>> { let USVString(ref script_url) = script_url; + let api_base_url = self.global().api_base_url(); // Step 3-4 - let script_url = match self.global().r().api_base_url().join(script_url) { + let script_url = match api_base_url.join(script_url) { Ok(url) => url, Err(_) => return Err(Error::Type("Invalid script URL".to_owned())) }; @@ -77,7 +78,7 @@ impl ServiceWorkerContainerMethods for ServiceWorkerContainer { let scope = match options.scope { Some(ref scope) => { let &USVString(ref inner_scope) = scope; - match self.global().r().api_base_url().join(inner_scope) { + match api_base_url.join(inner_scope) { Ok(url) => url, Err(_) => return Err(Error::Type("Invalid scope URL".to_owned())) } @@ -95,11 +96,12 @@ impl ServiceWorkerContainerMethods for ServiceWorkerContainer { return Err(Error::Type("Scope URL contains forbidden characters".to_owned())); } - let worker_registration = ServiceWorkerRegistration::new(self.global().r(), + let global = self.global(); + let worker_registration = ServiceWorkerRegistration::new(&global, script_url, scope.clone(), self); - ScriptThread::set_registration(scope, &*worker_registration, self.global().r().pipeline_id()); + ScriptThread::set_registration(scope, &*worker_registration, global.pipeline_id()); Ok(worker_registration) } } |