mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
Subsume ScriptMsg::WorkerDispatchErrorEvent into ScriptMsg::RunnableMsg via introduction of Worker::WorkerErrorHandler (Closes #5171).
This commit is contained in:
parent
fbacd1a4c4
commit
7803f2b216
3 changed files with 30 additions and 13 deletions
|
@ -18,11 +18,10 @@ use dom::bindings::utils::Reflectable;
|
||||||
use dom::errorevent::ErrorEvent;
|
use dom::errorevent::ErrorEvent;
|
||||||
use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId};
|
use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId};
|
||||||
use dom::messageevent::MessageEvent;
|
use dom::messageevent::MessageEvent;
|
||||||
use dom::worker::{TrustedWorkerAddress, WorkerMessageHandler, WorkerEventHandler, Worker};
|
use dom::worker::{TrustedWorkerAddress, WorkerMessageHandler, WorkerEventHandler, WorkerErrorHandler};
|
||||||
use dom::workerglobalscope::{WorkerGlobalScope, WorkerGlobalScopeHelpers};
|
use dom::workerglobalscope::{WorkerGlobalScope, WorkerGlobalScopeHelpers};
|
||||||
use dom::workerglobalscope::WorkerGlobalScopeTypeId;
|
use dom::workerglobalscope::WorkerGlobalScopeTypeId;
|
||||||
use script_task::{ScriptTask, ScriptChan, ScriptMsg, TimerSource};
|
use script_task::{ScriptTask, ScriptChan, ScriptMsg, TimerSource};
|
||||||
use script_task::ScriptMsg::WorkerDispatchErrorEvent;
|
|
||||||
use script_task::StackRootTLS;
|
use script_task::StackRootTLS;
|
||||||
|
|
||||||
use net::resource_task::{ResourceTask, load_whole_resource};
|
use net::resource_task::{ResourceTask, load_whole_resource};
|
||||||
|
@ -217,9 +216,6 @@ impl<'a> PrivateDedicatedWorkerGlobalScopeHelpers for JSRef<'a, DedicatedWorkerG
|
||||||
let scope: JSRef<WorkerGlobalScope> = WorkerGlobalScopeCast::from_ref(self);
|
let scope: JSRef<WorkerGlobalScope> = WorkerGlobalScopeCast::from_ref(self);
|
||||||
LiveDOMReferences::cleanup(scope.get_cx(), addr);
|
LiveDOMReferences::cleanup(scope.get_cx(), addr);
|
||||||
}
|
}
|
||||||
ScriptMsg::WorkerDispatchErrorEvent(addr, msg, file_name, line_num, col_num) => {
|
|
||||||
Worker::handle_error_message(addr, msg, file_name, line_num, col_num);
|
|
||||||
},
|
|
||||||
ScriptMsg::FireTimer(TimerSource::FromWorker, timer_id) => {
|
ScriptMsg::FireTimer(TimerSource::FromWorker, timer_id) => {
|
||||||
let scope: JSRef<WorkerGlobalScope> = WorkerGlobalScopeCast::from_ref(self);
|
let scope: JSRef<WorkerGlobalScope> = WorkerGlobalScopeCast::from_ref(self);
|
||||||
scope.handle_fire_timer(timer_id);
|
scope.handle_fire_timer(timer_id);
|
||||||
|
@ -234,8 +230,8 @@ impl<'a> PrivateDedicatedWorkerGlobalScopeHelpers for JSRef<'a, DedicatedWorkerG
|
||||||
let line_num = errorevent.Lineno();
|
let line_num = errorevent.Lineno();
|
||||||
let col_num = errorevent.Colno();
|
let col_num = errorevent.Colno();
|
||||||
let worker = self.worker.borrow().as_ref().unwrap().clone();
|
let worker = self.worker.borrow().as_ref().unwrap().clone();
|
||||||
self.parent_sender.send(ScriptMsg::WorkerDispatchErrorEvent(worker, msg, file_name,
|
self.parent_sender.send(ScriptMsg::RunnableMsg(
|
||||||
line_num, col_num)).unwrap();
|
box WorkerErrorHandler::new(worker, msg, file_name, line_num, col_num))).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -165,3 +165,30 @@ impl Runnable for WorkerEventHandler {
|
||||||
Worker::dispatch_simple_error(this.addr);
|
Worker::dispatch_simple_error(this.addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct WorkerErrorHandler {
|
||||||
|
addr: TrustedWorkerAddress,
|
||||||
|
msg: DOMString,
|
||||||
|
file_name: DOMString,
|
||||||
|
line_num: u32,
|
||||||
|
col_num: u32,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WorkerErrorHandler {
|
||||||
|
pub fn new(addr: TrustedWorkerAddress, msg: DOMString, file_name: DOMString, line_num: u32, col_num: u32) -> WorkerErrorHandler {
|
||||||
|
WorkerErrorHandler {
|
||||||
|
addr: addr,
|
||||||
|
msg: msg,
|
||||||
|
file_name: file_name,
|
||||||
|
line_num: line_num,
|
||||||
|
col_num: col_num,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Runnable for WorkerErrorHandler {
|
||||||
|
fn handler(self: Box<WorkerErrorHandler>) {
|
||||||
|
let this = *self;
|
||||||
|
Worker::handle_error_message(this.addr, this.msg, this.file_name, this.line_num, this.col_num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -37,7 +37,6 @@ use dom::uievent::UIEvent;
|
||||||
use dom::eventtarget::EventTarget;
|
use dom::eventtarget::EventTarget;
|
||||||
use dom::node::{self, Node, NodeHelpers, NodeDamage, window_from_node};
|
use dom::node::{self, Node, NodeHelpers, NodeDamage, window_from_node};
|
||||||
use dom::window::{Window, WindowHelpers, ScriptHelpers, ReflowReason};
|
use dom::window::{Window, WindowHelpers, ScriptHelpers, ReflowReason};
|
||||||
use dom::worker::{Worker, TrustedWorkerAddress};
|
|
||||||
use parse::html::{HTMLInput, parse_html};
|
use parse::html::{HTMLInput, parse_html};
|
||||||
use layout_interface::{ScriptLayoutChan, LayoutChan, ReflowGoal, ReflowQueryType};
|
use layout_interface::{ScriptLayoutChan, LayoutChan, ReflowGoal, ReflowQueryType};
|
||||||
use layout_interface;
|
use layout_interface;
|
||||||
|
@ -67,7 +66,6 @@ use net::storage_task::StorageTask;
|
||||||
use string_cache::Atom;
|
use string_cache::Atom;
|
||||||
use util::geometry::to_frac_px;
|
use util::geometry::to_frac_px;
|
||||||
use util::smallvec::SmallVec;
|
use util::smallvec::SmallVec;
|
||||||
use util::str::DOMString;
|
|
||||||
use util::task::{spawn_named, spawn_named_with_send_on_failure};
|
use util::task::{spawn_named, spawn_named_with_send_on_failure};
|
||||||
use util::task_state;
|
use util::task_state;
|
||||||
|
|
||||||
|
@ -173,8 +171,6 @@ pub enum ScriptMsg {
|
||||||
/// Message sent through Worker.postMessage (only dispatched to
|
/// Message sent through Worker.postMessage (only dispatched to
|
||||||
/// DedicatedWorkerGlobalScope).
|
/// DedicatedWorkerGlobalScope).
|
||||||
DOMMessage(StructuredCloneData),
|
DOMMessage(StructuredCloneData),
|
||||||
/// Sends a message to the Worker object (dispatched to all tasks) regarding error.
|
|
||||||
WorkerDispatchErrorEvent(TrustedWorkerAddress, DOMString, DOMString, u32, u32),
|
|
||||||
/// Generic message that encapsulates event handling.
|
/// Generic message that encapsulates event handling.
|
||||||
RunnableMsg(Box<Runnable+Send>),
|
RunnableMsg(Box<Runnable+Send>),
|
||||||
/// A DOM object's last pinned reference was removed (dispatched to all tasks).
|
/// A DOM object's last pinned reference was removed (dispatched to all tasks).
|
||||||
|
@ -660,8 +656,6 @@ impl ScriptTask {
|
||||||
self.handle_exit_window_msg(id),
|
self.handle_exit_window_msg(id),
|
||||||
ScriptMsg::DOMMessage(..) =>
|
ScriptMsg::DOMMessage(..) =>
|
||||||
panic!("unexpected message"),
|
panic!("unexpected message"),
|
||||||
ScriptMsg::WorkerDispatchErrorEvent(addr, msg, file_name,line_num, col_num) =>
|
|
||||||
Worker::handle_error_message(addr, msg, file_name, line_num, col_num),
|
|
||||||
ScriptMsg::RunnableMsg(runnable) =>
|
ScriptMsg::RunnableMsg(runnable) =>
|
||||||
runnable.handler(),
|
runnable.handler(),
|
||||||
ScriptMsg::RefcountCleanup(addr) =>
|
ScriptMsg::RefcountCleanup(addr) =>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue