diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-08-04 01:25:23 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-04 01:25:23 -0500 |
commit | 20b9ce6cff2a2e553a1eba4bf74d8f58a96b6e65 (patch) | |
tree | f6c94a920e36d6b67f3150bc35efde5c25d516f6 /components/script/dom | |
parent | 5909c4e7e5b8e94f9f532a429d3a5772cc716082 (diff) | |
parent | 1b29dfb8abd31c1e5339aef202e2c618bbddc9ad (diff) | |
download | servo-20b9ce6cff2a2e553a1eba4bf74d8f58a96b6e65.tar.gz servo-20b9ce6cff2a2e553a1eba4bf74d8f58a96b6e65.zip |
Auto merge of #12682 - creativcoder:fire-fetch, r=jdm
Dispatch lifecycle events to service worker object and refactor html tests
<!-- Please describe your changes on the following line: -->
Changes introduced to dispatch `controllerchange`, `activate` and `fetch` simple events to Service Worker interfaces. The html tests under `tests/html/service-workers` was also updated to demo the changes.
r? @jdm
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix #__ (github issue number if applicable).
<!-- Either: -->
- [X] These changes do not require tests because refactor.
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/12682)
<!-- Reviewable:end -->
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); } } |