aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/task_source.rs
diff options
context:
space:
mode:
authorMartin Robinson <mrobinson@igalia.com>2025-03-13 13:00:31 +0100
committerGitHub <noreply@github.com>2025-03-13 12:00:31 +0000
commit294a649a6c96ea0fba05fad59a41dea6c7f1d66d (patch)
tree5b3de846c3e4954ff7e4d3af666d3c82108b09f9 /components/script/task_source.rs
parent959720db0a15d207e31e44ffd58d76e9e31b18c9 (diff)
downloadservo-294a649a6c96ea0fba05fad59a41dea6c7f1d66d.tar.gz
servo-294a649a6c96ea0fba05fad59a41dea6c7f1d66d.zip
Use `strum` to iterate through enum variants and get their names (#35933)
`strum` allows us to avoid manually listing enum variant names and also to get their names as static strings. We cannot use this for all cases due to https://github.com/Peternator7/strum/issues/152, but we can still use it to remove a lot of code. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Diffstat (limited to 'components/script/task_source.rs')
-rw-r--r--components/script/task_source.rs28
1 files changed, 2 insertions, 26 deletions
diff --git a/components/script/task_source.rs b/components/script/task_source.rs
index cd36e176181..4f18292693e 100644
--- a/components/script/task_source.rs
+++ b/components/script/task_source.rs
@@ -6,6 +6,7 @@ use std::fmt;
use base::id::PipelineId;
use malloc_size_of_derive::MallocSizeOf;
+use strum_macros::VariantArray;
use stylo_atoms::Atom;
use crate::dom::bindings::refcounted::Trusted;
@@ -19,10 +20,7 @@ use crate::task_manager::TaskManager;
/// 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.
-///
-/// Note: When adding or removing a [`TaskSourceName`], be sure to also update the return value of
-/// [`TaskSourceName::all`].
-#[derive(Clone, Copy, Debug, Eq, Hash, JSTraceable, MallocSizeOf, PartialEq)]
+#[derive(Clone, Copy, Debug, Eq, Hash, JSTraceable, MallocSizeOf, PartialEq, VariantArray)]
pub(crate) enum TaskSourceName {
Canvas,
DOMManipulation,
@@ -68,28 +66,6 @@ impl From<TaskSourceName> for ScriptThreadEventCategory {
}
}
-impl TaskSourceName {
- pub(crate) fn all() -> &'static [TaskSourceName] {
- &[
- TaskSourceName::Canvas,
- TaskSourceName::DOMManipulation,
- TaskSourceName::FileReading,
- TaskSourceName::FontLoading,
- TaskSourceName::HistoryTraversal,
- TaskSourceName::Networking,
- TaskSourceName::PerformanceTimeline,
- TaskSourceName::PortMessage,
- TaskSourceName::UserInteraction,
- TaskSourceName::RemoteEvent,
- TaskSourceName::Rendering,
- TaskSourceName::MediaElement,
- TaskSourceName::WebSocket,
- TaskSourceName::Timer,
- TaskSourceName::Gamepad,
- ]
- }
-}
-
pub(crate) struct TaskSource<'task_manager> {
pub(crate) task_manager: &'task_manager TaskManager,
pub(crate) name: TaskSourceName,