auto merge of #4931 : KiChjang/servo/worker-error-event, r=jdm

Fixes #4511
This commit is contained in:
bors-servo 2015-02-21 07:39:51 -07:00
commit 1ad9c678f7
2 changed files with 34 additions and 1 deletions

View file

@ -89,6 +89,18 @@ impl Worker {
MessageEvent::dispatch_jsval(target, global.r(), message);
}
pub fn dispatch_simple_error(address: TrustedWorkerAddress) {
let worker = address.to_temporary().root();
let global = worker.r().global.root();
let target: JSRef<EventTarget> = EventTargetCast::from_ref(worker.r());
let event = Event::new(global.r(),
"error".to_owned(),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable).root();
event.r().fire(target);
}
pub fn handle_error_message(address: TrustedWorkerAddress, message: DOMString,
filename: DOMString, lineno: u32, colno: u32) {
let worker = address.to_temporary().root();
@ -134,3 +146,22 @@ impl Runnable for WorkerMessageHandler {
Worker::handle_message(this.addr, this.data);
}
}
pub struct WorkerEventHandler {
addr: TrustedWorkerAddress,
}
impl WorkerEventHandler {
pub fn new(addr: TrustedWorkerAddress) -> WorkerEventHandler {
WorkerEventHandler {
addr: addr
}
}
}
impl Runnable for WorkerEventHandler {
fn handler(self: Box<WorkerEventHandler>) {
let this = *self;
Worker::dispatch_simple_error(this.addr);
}
}