diff --git a/components/script/dom/serviceworkercontainer.rs b/components/script/dom/serviceworkercontainer.rs index b0781941f51..e6e9c037ab3 100644 --- a/components/script/dom/serviceworkercontainer.rs +++ b/components/script/dom/serviceworkercontainer.rs @@ -5,12 +5,11 @@ use std::default::Default; use std::rc::Rc; +use base::generic_channel::GenericCallback; use constellation_traits::{ Job, JobError, JobResult, JobResultValue, JobType, ScriptToConstellationMessage, }; use dom_struct::dom_struct; -use ipc_channel::ipc; -use ipc_channel::router::ROUTER; use crate::dom::bindings::codegen::Bindings::ServiceWorkerContainerBinding::{ RegistrationOptions, ServiceWorkerContainerMethods, @@ -155,15 +154,11 @@ impl ServiceWorkerContainerMethods for ServiceWorkerContai task_source: global.task_manager().dom_manipulation_task_source().into(), }; - let (job_result_sender, job_result_receiver) = ipc::channel().expect("ipc channel failure"); - - ROUTER.add_typed_route( - job_result_receiver, - Box::new(move |message| match message { - Ok(msg) => handler.handle(msg), - Err(err) => warn!("Error receiving a JobResult: {:?}", err), - }), - ); + let result_handler = GenericCallback::new(move |message| match message { + Ok(msg) => handler.handle(msg), + Err(err) => warn!("Error receiving a JobResult: {:?}", err), + }) + .expect("Failed to create callback"); let scope_things = ServiceWorkerRegistration::create_scope_things(&global, script_url.clone()); @@ -173,7 +168,7 @@ impl ServiceWorkerContainerMethods for ServiceWorkerContai JobType::Register, scope, script_url, - job_result_sender, + result_handler, self.client.creation_url(), Some(scope_things), ); diff --git a/components/shared/constellation/from_script_message.rs b/components/shared/constellation/from_script_message.rs index 8f2d7b464aa..5349b8a4827 100644 --- a/components/shared/constellation/from_script_message.rs +++ b/components/shared/constellation/from_script_message.rs @@ -8,7 +8,7 @@ use std::collections::HashMap; use std::fmt; use base::Epoch; -use base::generic_channel::{GenericSender, SendResult}; +use base::generic_channel::{GenericCallback, GenericSender, SendResult}; use base::id::{ BroadcastChannelRouterId, BrowsingContextId, HistoryStateId, MessagePortId, MessagePortRouterId, PipelineId, ServiceWorkerId, ServiceWorkerRegistrationId, WebViewId, @@ -290,7 +290,7 @@ pub struct Job { /// pub script_url: ServoUrl, /// - pub client: IpcSender, + pub client: GenericCallback, /// pub referrer: ServoUrl, /// Various data needed to process job. @@ -303,7 +303,7 @@ impl Job { job_type: JobType, scope_url: ServoUrl, script_url: ServoUrl, - client: IpcSender, + client: GenericCallback, referrer: ServoUrl, scope_things: Option, ) -> Job {