aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorRahul Sharma <rsconceptx@gmail.com>2016-08-01 16:25:08 +0530
committerRahul Sharma <rsconceptx@gmail.com>2016-08-02 20:18:25 +0530
commit1b29dfb8abd31c1e5339aef202e2c618bbddc9ad (patch)
treee7cf6d72c039788eb008ccb063e4951e95fd8461 /components/script/dom
parent2aa257f603e73655ccf2375e3ee875a37d707d09 (diff)
downloadservo-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.rs4
-rw-r--r--components/script/dom/serviceworkerglobalscope.rs9
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);
}
}