mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Use task! to dispatch events from event sources
This commit is contained in:
parent
445a93eb8b
commit
9339eb7d68
1 changed files with 15 additions and 22 deletions
|
@ -216,12 +216,21 @@ impl EventSourceContext {
|
||||||
// Step 7
|
// Step 7
|
||||||
self.event_type.clear();
|
self.event_type.clear();
|
||||||
self.data.clear();
|
self.data.clear();
|
||||||
// Step 8
|
|
||||||
let task = box DispatchEventTask {
|
// Step 8.
|
||||||
event_source: self.event_source.clone(),
|
let global = event_source.global();
|
||||||
event: Trusted::new(&event)
|
let event_source = self.event_source.clone();
|
||||||
};
|
let event = Trusted::new(&*event);
|
||||||
let _ = event_source.global().networking_task_source().queue(task, &*event_source.global());
|
// FIXME(nox): Why are errors silenced here?
|
||||||
|
let _ = global.networking_task_source().queue(
|
||||||
|
box task!(dispatch_the_event_source_event: move || {
|
||||||
|
let event_source = event_source.root();
|
||||||
|
if event_source.ready_state.get() != ReadyState::Closed {
|
||||||
|
event.root().upcast::<Event>().fire(&event_source.upcast());
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
&global,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#event-stream-interpretation
|
// https://html.spec.whatwg.org/multipage/#event-stream-interpretation
|
||||||
|
@ -557,19 +566,3 @@ impl EventSourceTimeoutCallback {
|
||||||
global.core_resource_thread().send(CoreResourceMsg::Fetch(request, self.action_sender)).unwrap();
|
global.core_resource_thread().send(CoreResourceMsg::Fetch(request, self.action_sender)).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct DispatchEventTask {
|
|
||||||
event_source: Trusted<EventSource>,
|
|
||||||
event: Trusted<MessageEvent>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Task for DispatchEventTask {
|
|
||||||
// https://html.spec.whatwg.org/multipage/#dispatchMessage
|
|
||||||
fn run(self: Box<Self>) {
|
|
||||||
let event_source = self.event_source.root();
|
|
||||||
// Step 8
|
|
||||||
if event_source.ready_state.get() != ReadyState::Closed {
|
|
||||||
self.event.root().upcast::<Event>().fire(&event_source.upcast());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue