diff options
author | Keith Yeung <kungfukeith11@gmail.com> | 2015-02-16 02:25:06 +0800 |
---|---|---|
committer | Keith Yeung <kungfukeith11@gmail.com> | 2015-02-21 21:51:35 +0800 |
commit | 61086d6ee54c8033b0baf43f3408c13693128b8d (patch) | |
tree | bd52adb57b3d4497cbd8fb2a3bccf13d4ddf49d8 /components/script/dom/worker.rs | |
parent | 3e7dc576934acb935fd67b6b3d909aca216c5dec (diff) | |
download | servo-61086d6ee54c8033b0baf43f3408c13693128b8d.tar.gz servo-61086d6ee54c8033b0baf43f3408c13693128b8d.zip |
Worker now fires errorevent when url fetching failed, fixes #4511
Diffstat (limited to 'components/script/dom/worker.rs')
-rw-r--r-- | components/script/dom/worker.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 530d34683f3..705d49b6445 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -92,6 +92,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(); @@ -137,3 +149,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); + } +} |