diff options
author | bors-servo <metajack+bors@gmail.com> | 2014-12-24 03:45:44 -0700 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2014-12-24 03:45:44 -0700 |
commit | 194ce20969f04bf2d077ebed106fc1bfb5eb32ee (patch) | |
tree | 93d1eeb4eb770a0bf3358215533527859e22a271 /components/script/script_task.rs | |
parent | 71b9f17b6b1695c08036f688249b486fa58c25c9 (diff) | |
parent | 271aa277e90ffeb1e060a2aac6f05429ded55c38 (diff) | |
download | servo-194ce20969f04bf2d077ebed106fc1bfb5eb32ee.tar.gz servo-194ce20969f04bf2d077ebed106fc1bfb5eb32ee.zip |
auto merge of #4474 : thiagopnts/servo/generic-msgs, r=jdm
This refs #3735. As discussed in the issue, I did it cloning when I couldn't dereference an attribute. The trait method should be on `&self` for object-safety reasons.
Diffstat (limited to 'components/script/script_task.rs')
-rw-r--r-- | components/script/script_task.rs | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/components/script/script_task.rs b/components/script/script_task.rs index 696d0e10f8f..40d90e150cb 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -27,7 +27,6 @@ use dom::mouseevent::MouseEvent; use dom::node::{mod, Node, NodeHelpers, NodeDamage, NodeTypeId}; use dom::window::{Window, WindowHelpers}; use dom::worker::{Worker, TrustedWorkerAddress}; -use dom::xmlhttprequest::{TrustedXHRAddress, XMLHttpRequest, XHRProgress}; use parse::html::{HTMLInput, parse_html}; use layout_interface::{ScriptLayoutChan, LayoutChan, ReflowGoal, ReflowQueryType}; use layout_interface; @@ -87,6 +86,10 @@ pub enum TimerSource { FromWorker } +pub trait Runnable { + fn handler(&self); +} + /// Messages used to control script event loops, such as ScriptTask and /// DedicatedWorkerGlobalScope. pub enum ScriptMsg { @@ -106,10 +109,6 @@ pub enum ScriptMsg { /// Notifies the script that a window associated with a particular pipeline /// should be closed (only dispatched to ScriptTask). ExitWindow(PipelineId), - /// Notifies the script of progress on a fetch (dispatched to all tasks). - XHRProgress(TrustedXHRAddress, XHRProgress), - /// Releases one reference to the XHR object (dispatched to all tasks). - XHRRelease(TrustedXHRAddress), /// Message sent through Worker.postMessage (only dispatched to /// DedicatedWorkerGlobalScope). DOMMessage(*mut u64, size_t), @@ -117,6 +116,8 @@ pub enum ScriptMsg { WorkerPostMessage(TrustedWorkerAddress, *mut u64, size_t), /// Releases one reference to the Worker object (dispatched to all tasks). WorkerRelease(TrustedWorkerAddress), + /// Generic message that encapsulates event handling. + RunnableMsg(Box<Runnable+Send>), } /// Encapsulates internal communication within the script task. @@ -572,16 +573,14 @@ impl ScriptTask { self.handle_navigate_msg(direction), ScriptMsg::ExitWindow(id) => self.handle_exit_window_msg(id), - ScriptMsg::XHRProgress(addr, progress) => - XMLHttpRequest::handle_progress(addr, progress), - ScriptMsg::XHRRelease(addr) => - XMLHttpRequest::handle_release(addr), ScriptMsg::DOMMessage(..) => panic!("unexpected message"), ScriptMsg::WorkerPostMessage(addr, data, nbytes) => Worker::handle_message(addr, data, nbytes), ScriptMsg::WorkerRelease(addr) => Worker::handle_release(addr), + ScriptMsg::RunnableMsg(runnable) => + runnable.handler(), } } |