mirror of
https://github.com/servo/servo.git
synced 2025-09-14 17:08:22 +01:00
script: Migrate JobResult to GenericCallback (#39074)
Use the new GenericCallback abstraction for serviceworker job results. Testing: Covered by service worker wpt tests Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This commit is contained in:
parent
fc30a26005
commit
eece4c24b0
2 changed files with 10 additions and 15 deletions
|
@ -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<crate::DomTypeHolder> 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<crate::DomTypeHolder> for ServiceWorkerContai
|
|||
JobType::Register,
|
||||
scope,
|
||||
script_url,
|
||||
job_result_sender,
|
||||
result_handler,
|
||||
self.client.creation_url(),
|
||||
Some(scope_things),
|
||||
);
|
||||
|
|
|
@ -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 {
|
|||
/// <https://w3c.github.io/ServiceWorker/#dfn-job-script-url>
|
||||
pub script_url: ServoUrl,
|
||||
/// <https://w3c.github.io/ServiceWorker/#dfn-job-client>
|
||||
pub client: IpcSender<JobResult>,
|
||||
pub client: GenericCallback<JobResult>,
|
||||
/// <https://w3c.github.io/ServiceWorker/#job-referrer>
|
||||
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<JobResult>,
|
||||
client: GenericCallback<JobResult>,
|
||||
referrer: ServoUrl,
|
||||
scope_things: Option<ScopeThings>,
|
||||
) -> Job {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue