mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
introduce "per task source" ignoring of tasks
This commit is contained in:
parent
ce430566cd
commit
671627e97e
21 changed files with 127 additions and 34 deletions
|
@ -2,6 +2,7 @@
|
|||
* 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/. */
|
||||
|
||||
|
||||
pub mod dom_manipulation;
|
||||
pub mod file_reading;
|
||||
pub mod history_traversal;
|
||||
|
@ -10,10 +11,33 @@ pub mod performance_timeline;
|
|||
pub mod user_interaction;
|
||||
|
||||
use dom::globalscope::GlobalScope;
|
||||
use enum_iterator::IntoEnumIterator;
|
||||
use std::result::Result;
|
||||
use task::{TaskCanceller, TaskOnce};
|
||||
|
||||
// The names of all task sources, used to differentiate TaskCancellers.
|
||||
// Note: When adding a task source, update this enum.
|
||||
// Note: The HistoryTraversalTaskSource is not part of this,
|
||||
// because it doesn't implement TaskSource.
|
||||
#[derive(Eq, Hash, IntoEnumIterator, JSTraceable, PartialEq)]
|
||||
pub enum TaskSourceName {
|
||||
DOMManipulation,
|
||||
FileReading,
|
||||
HistoryTraversal,
|
||||
Networking,
|
||||
PerformanceTimeline,
|
||||
UserInteraction
|
||||
}
|
||||
|
||||
impl TaskSourceName {
|
||||
pub fn all() -> Vec<TaskSourceName> {
|
||||
TaskSourceName::into_enum_iter().collect()
|
||||
}
|
||||
}
|
||||
|
||||
pub trait TaskSource {
|
||||
const NAME: TaskSourceName;
|
||||
|
||||
fn queue_with_canceller<T>(
|
||||
&self,
|
||||
task: T,
|
||||
|
@ -26,6 +50,7 @@ pub trait TaskSource {
|
|||
where
|
||||
T: TaskOnce + 'static,
|
||||
{
|
||||
self.queue_with_canceller(task, &global.task_canceller())
|
||||
let canceller = global.task_canceller(Self::NAME);
|
||||
self.queue_with_canceller(task, &canceller)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue