diff options
author | Rahul Sharma <rsconceptx@gmail.com> | 2016-08-01 16:25:08 +0530 |
---|---|---|
committer | Rahul Sharma <rsconceptx@gmail.com> | 2016-08-02 20:18:25 +0530 |
commit | 1b29dfb8abd31c1e5339aef202e2c618bbddc9ad (patch) | |
tree | e7cf6d72c039788eb008ccb063e4951e95fd8461 /components/script/dom | |
parent | 2aa257f603e73655ccf2375e3ee875a37d707d09 (diff) | |
download | servo-1b29dfb8abd31c1e5339aef202e2c618bbddc9ad.tar.gz servo-1b29dfb8abd31c1e5339aef202e2c618bbddc9ad.zip |
Dispatch events to service worker object and refactor html tests
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/serviceworkercontainer.rs | 4 | ||||
-rw-r--r-- | components/script/dom/serviceworkerglobalscope.rs | 9 |
2 files changed, 9 insertions, 4 deletions
diff --git a/components/script/dom/serviceworkercontainer.rs b/components/script/dom/serviceworkercontainer.rs index 17fea7100be..4487c064fe1 100644 --- a/components/script/dom/serviceworkercontainer.rs +++ b/components/script/dom/serviceworkercontainer.rs @@ -6,6 +6,7 @@ use dom::bindings::codegen::Bindings::ServiceWorkerContainerBinding::Registratio use dom::bindings::codegen::Bindings::ServiceWorkerContainerBinding::{ServiceWorkerContainerMethods, Wrap}; 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; @@ -41,7 +42,8 @@ pub trait Controllable { impl Controllable for ServiceWorkerContainer { fn set_controller(&self, active_worker: &ServiceWorker) { - self.controller.set(Some(active_worker)) + self.controller.set(Some(active_worker)); + self.upcast::<EventTarget>().fire_simple_event("controllerchange"); } } diff --git a/components/script/dom/serviceworkerglobalscope.rs b/components/script/dom/serviceworkerglobalscope.rs index c6a238ac10f..dc8a8788a61 100644 --- a/components/script/dom/serviceworkerglobalscope.rs +++ b/components/script/dom/serviceworkerglobalscope.rs @@ -15,6 +15,7 @@ use dom::bindings::js::{Root, RootCollection}; use dom::bindings::refcounted::LiveDOMReferences; use dom::bindings::reflector::Reflectable; use dom::bindings::str::DOMString; +use dom::eventtarget::EventTarget; use dom::messageevent::MessageEvent; use dom::serviceworker::TrustedServiceWorkerAddress; use dom::workerglobalscope::WorkerGlobalScope; @@ -161,11 +162,9 @@ impl ServiceWorkerGlobalScope { let (devtools_mpsc_chan, devtools_mpsc_port) = channel(); ROUTER.route_ipc_receiver_to_mpsc_sender(devtools_receiver, devtools_mpsc_chan); - // TODO XXXcreativcoder use this timer_ipc_port, when we have a service worker instance here let (timer_ipc_chan, _timer_ipc_port) = ipc::channel().unwrap(); let (timer_chan, timer_port) = channel(); - let global = ServiceWorkerGlobalScope::new( init, url, pipeline_id, devtools_mpsc_port, runtime, own_sender, receiver, @@ -178,7 +177,6 @@ impl ServiceWorkerGlobalScope { } scope.execute_script(DOMString::from(source)); - // Service workers are time limited spawn_named("SWTimeoutThread".to_owned(), move || { let sw_lifetime_timeout = PREFS.get("dom.serviceworker.timeout_seconds").as_u64().unwrap(); @@ -186,6 +184,7 @@ impl ServiceWorkerGlobalScope { let _ = timer_chan.send(()); }); + scope.upcast::<EventTarget>().fire_simple_event("activate"); let reporter_name = format!("service-worker-reporter-{}", random::<u64>()); scope.mem_profiler_chan().run_with_memory_reporting(|| { while let Ok(event) = global.receive_event() { @@ -250,6 +249,10 @@ impl ServiceWorkerGlobalScope { reports_chan.send(reports); }, Response(mediator) => { + // TODO XXXcreativcoder This will eventually use a FetchEvent interface to fire event + // when we have the Request and Response dom api's implemented + // https://slightlyoff.github.io/ServiceWorker/spec/service_worker_1/index.html#fetch-event-section + self.upcast::<EventTarget>().fire_simple_event("fetch"); let _ = mediator.response_chan.send(None); } } |