Implement TaskSource for HistoryTraversal

And remove the method in window that returns it, because it isn't used
so far.
This commit is contained in:
Agustin Chiappe Berrini 2018-09-27 18:43:22 -04:00
parent b1a2b6b5bf
commit 14bc8ab754
6 changed files with 42 additions and 15 deletions

View file

@ -2,12 +2,15 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use crate::script_runtime::{CommonScriptMsg, ScriptChan};
use crate::script_thread::MainThreadScriptMsg;
use msg::constellation_msg::PipelineId;
use script_runtime::{CommonScriptMsg, ScriptChan, ScriptThreadEventCategory};
use script_thread::MainThreadScriptMsg;
use servo_channel::Sender;
use task::{TaskCanceller, TaskOnce};
use task_source::{TaskSource, TaskSourceName};
#[derive(JSTraceable)]
pub struct HistoryTraversalTaskSource(pub Sender<MainThreadScriptMsg>);
pub struct HistoryTraversalTaskSource(pub Sender<MainThreadScriptMsg>, pub PipelineId);
impl ScriptChan for HistoryTraversalTaskSource {
fn send(&self, msg: CommonScriptMsg) -> Result<(), ()> {
@ -16,7 +19,24 @@ impl ScriptChan for HistoryTraversalTaskSource {
.map_err(|_| ())
}
fn clone(&self) -> Box<dyn ScriptChan + Send> {
Box::new(HistoryTraversalTaskSource((&self.0).clone()))
fn clone(&self) -> Box<ScriptChan + Send> {
Box::new(HistoryTraversalTaskSource((&self.0).clone(), (&self.1).clone()))
}
}
impl TaskSource for HistoryTraversalTaskSource {
const NAME: TaskSourceName = TaskSourceName::HistoryTraversal;
fn queue_with_canceller<T>(&self, task: T, canceller: &TaskCanceller) -> Result<(), ()>
where
T: TaskOnce + 'static,
{
let msg = MainThreadScriptMsg::Common(CommonScriptMsg::Task(
ScriptThreadEventCategory::HistoryEvent,
Box::new(canceller.wrap_task(task)),
Some(self.1),
HistoryTraversalTaskSource::NAME,
));
self.0.send(msg).map_err(|_| ())
}
}