diff options
Diffstat (limited to 'components/shared')
-rw-r--r-- | components/shared/base/id.rs | 2 | ||||
-rw-r--r-- | components/shared/constellation/Cargo.toml | 1 | ||||
-rw-r--r-- | components/shared/constellation/structured_data/mod.rs | 7 | ||||
-rw-r--r-- | components/shared/constellation/structured_data/serializable.rs | 35 | ||||
-rw-r--r-- | components/shared/constellation/structured_data/transferable.rs | 2 | ||||
-rw-r--r-- | components/shared/embedder/Cargo.toml | 1 | ||||
-rw-r--r-- | components/shared/profile/Cargo.toml | 1 | ||||
-rw-r--r-- | components/shared/script/Cargo.toml | 1 | ||||
-rw-r--r-- | components/shared/script_layout/Cargo.toml | 3 |
9 files changed, 44 insertions, 9 deletions
diff --git a/components/shared/base/id.rs b/components/shared/base/id.rs index b6ad1b3de9b..a091311d237 100644 --- a/components/shared/base/id.rs +++ b/components/shared/base/id.rs @@ -371,6 +371,8 @@ namespace_id! {DomExceptionId, DomExceptionIndex, "DomException"} namespace_id! {HistoryStateId, HistoryStateIndex, "HistoryState"} +namespace_id! {ImageBitmapId, ImageBitmapIndex, "ImageBitmap"} + // We provide ids just for unit testing. pub const TEST_NAMESPACE: PipelineNamespaceId = PipelineNamespaceId(1234); #[allow(unsafe_code)] diff --git a/components/shared/constellation/Cargo.toml b/components/shared/constellation/Cargo.toml index 53a4307df60..3b093b3f684 100644 --- a/components/shared/constellation/Cargo.toml +++ b/components/shared/constellation/Cargo.toml @@ -17,7 +17,6 @@ webgpu = ["wgpu-core"] [dependencies] base = { workspace = true } -bitflags = { workspace = true } canvas_traits = { workspace = true } devtools_traits = { workspace = true } embedder_traits = { workspace = true } diff --git a/components/shared/constellation/structured_data/mod.rs b/components/shared/constellation/structured_data/mod.rs index 81e3849e476..3ea0d78eaf3 100644 --- a/components/shared/constellation/structured_data/mod.rs +++ b/components/shared/constellation/structured_data/mod.rs @@ -10,7 +10,7 @@ mod transferable; use std::collections::HashMap; -use base::id::{BlobId, DomExceptionId, DomPointId, MessagePortId}; +use base::id::{BlobId, DomExceptionId, DomPointId, ImageBitmapId, MessagePortId}; use log::warn; use malloc_size_of_derive::MallocSizeOf; use serde::{Deserialize, Serialize}; @@ -34,6 +34,10 @@ pub struct StructuredSerializedData { pub ports: Option<HashMap<MessagePortId, MessagePortImpl>>, /// Transform streams transferred objects. pub transform_streams: Option<HashMap<MessagePortId, TransformStreamData>>, + /// Serialized image bitmap objects. + pub image_bitmaps: Option<HashMap<ImageBitmapId, SerializableImageBitmap>>, + /// Transferred image bitmap objects. + pub transferred_image_bitmaps: Option<HashMap<ImageBitmapId, SerializableImageBitmap>>, } impl StructuredSerializedData { @@ -42,6 +46,7 @@ impl StructuredSerializedData { field.as_ref().is_some_and(|h| h.is_empty()) } match val { + Transferrable::ImageBitmap => is_field_empty(&self.transferred_image_bitmaps), Transferrable::MessagePort => is_field_empty(&self.ports), Transferrable::ReadableStream => is_field_empty(&self.ports), Transferrable::WritableStream => is_field_empty(&self.ports), diff --git a/components/shared/constellation/structured_data/serializable.rs b/components/shared/constellation/structured_data/serializable.rs index 22370087665..cbb932c52ec 100644 --- a/components/shared/constellation/structured_data/serializable.rs +++ b/components/shared/constellation/structured_data/serializable.rs @@ -11,7 +11,7 @@ use std::cell::RefCell; use std::collections::HashMap; use std::path::PathBuf; -use base::id::{BlobId, DomExceptionId, DomPointId}; +use base::id::{BlobId, DomExceptionId, DomPointId, ImageBitmapId}; use malloc_size_of_derive::MallocSizeOf; use net_traits::filemanager_thread::RelativePos; use serde::{Deserialize, Serialize}; @@ -47,6 +47,8 @@ pub enum Serializable { DomPointReadOnly, /// The `DOMException` interface. DomException, + /// The `ImageBitmap` interface. + ImageBitmap, } impl Serializable { @@ -62,6 +64,9 @@ impl Serializable { Serializable::DomException => { StructuredSerializedData::clone_all_of_type::<DomException> }, + Serializable::ImageBitmap => { + StructuredSerializedData::clone_all_of_type::<SerializableImageBitmap> + }, } } } @@ -312,3 +317,31 @@ impl BroadcastClone for DomException { Some(self.clone()) } } + +#[derive(Clone, Debug, Deserialize, MallocSizeOf, Serialize)] +/// A serializable version of the ImageBitmap interface. +pub struct SerializableImageBitmap { + pub width: u32, + pub height: u32, + pub bitmap_data: Vec<u8>, +} + +impl BroadcastClone for SerializableImageBitmap { + type Id = ImageBitmapId; + + fn source( + data: &StructuredSerializedData, + ) -> &Option<std::collections::HashMap<Self::Id, Self>> { + &data.image_bitmaps + } + + fn destination( + data: &mut StructuredSerializedData, + ) -> &mut Option<std::collections::HashMap<Self::Id, Self>> { + &mut data.image_bitmaps + } + + fn clone_for_broadcast(&self) -> Option<Self> { + Some(self.clone()) + } +} diff --git a/components/shared/constellation/structured_data/transferable.rs b/components/shared/constellation/structured_data/transferable.rs index 3210a41a538..bce10420182 100644 --- a/components/shared/constellation/structured_data/transferable.rs +++ b/components/shared/constellation/structured_data/transferable.rs @@ -24,6 +24,8 @@ pub struct TransformStreamData { /// All the DOM interfaces that can be transferred. #[derive(Clone, Copy, Debug, EnumIter)] pub enum Transferrable { + /// The `ImageBitmap` interface. + ImageBitmap, /// The `MessagePort` interface. MessagePort, /// The `ReadableStream` interface. diff --git a/components/shared/embedder/Cargo.toml b/components/shared/embedder/Cargo.toml index d938169d37a..4904adf6447 100644 --- a/components/shared/embedder/Cargo.toml +++ b/components/shared/embedder/Cargo.toml @@ -18,7 +18,6 @@ baked-default-resources = [] [dependencies] base = { workspace = true } -cfg-if = { workspace = true } cookie = { workspace = true } crossbeam-channel = { workspace = true } euclid = { workspace = true } diff --git a/components/shared/profile/Cargo.toml b/components/shared/profile/Cargo.toml index 8086bf17ba2..68a7df28c00 100644 --- a/components/shared/profile/Cargo.toml +++ b/components/shared/profile/Cargo.toml @@ -25,6 +25,5 @@ serde = { workspace = true } servo_allocator = { path = "../../allocator" } servo_config = { path = "../../config" } signpost = { git = "https://github.com/pcwalton/signpost.git" } -strum_macros = { workspace = true } time = { workspace = true } tracing = { workspace = true, optional = true } diff --git a/components/shared/script/Cargo.toml b/components/shared/script/Cargo.toml index 0d3690188fe..69438867cc0 100644 --- a/components/shared/script/Cargo.toml +++ b/components/shared/script/Cargo.toml @@ -26,7 +26,6 @@ crossbeam-channel = { workspace = true } devtools_traits = { workspace = true } embedder_traits = { workspace = true } euclid = { workspace = true } -http = { workspace = true } ipc-channel = { workspace = true } keyboard-types = { workspace = true } malloc_size_of = { workspace = true } diff --git a/components/shared/script_layout/Cargo.toml b/components/shared/script_layout/Cargo.toml index 06690192f73..167606f7247 100644 --- a/components/shared/script_layout/Cargo.toml +++ b/components/shared/script_layout/Cargo.toml @@ -15,7 +15,6 @@ path = "lib.rs" base = { workspace = true } app_units = { workspace = true } atomic_refcell = { workspace = true } -canvas_traits = { workspace = true } compositing_traits = { workspace = true } constellation_traits = { workspace = true } embedder_traits = { workspace = true } @@ -29,7 +28,6 @@ ipc-channel = { workspace = true } libc = { workspace = true } malloc_size_of = { workspace = true } malloc_size_of_derive = { workspace = true } -metrics = { path = "../../metrics" } net_traits = { workspace = true } pixels = { path = "../../pixels" } profile_traits = { workspace = true } @@ -40,5 +38,4 @@ serde = { workspace = true } servo_arc = { workspace = true } servo_url = { path = "../../url" } stylo = { workspace = true } -stylo_traits = { workspace = true } webrender_api = { workspace = true } |