Stream implement pipeThrough (#36977)

Part of https://github.com/servo/servo/issues/34676

https://github.com/servo/servo/pull/36905 needs to be merged first.

---------

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
This commit is contained in:
Taym Haddadi 2025-05-20 16:33:22 +02:00 committed by GitHub
parent d8294fa423
commit 5b2305784a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 129 additions and 227 deletions

View file

@ -152,7 +152,7 @@ pub enum TraversalDirection {
}
/// A task on the <https://html.spec.whatwg.org/multipage/#port-message-queue>
#[derive(Clone, Debug, Deserialize, MallocSizeOf, Serialize)]
#[derive(Debug, Deserialize, MallocSizeOf, Serialize)]
pub struct PortMessageTask {
/// The origin of this task.
pub origin: ImmutableOrigin,

View file

@ -20,7 +20,7 @@ pub use transferable::*;
/// A data-holder for serialized data and transferred objects.
/// <https://html.spec.whatwg.org/multipage/#structuredserializewithtransfer>
#[derive(Clone, Debug, Default, Deserialize, MallocSizeOf, Serialize)]
#[derive(Debug, Default, Deserialize, MallocSizeOf, Serialize)]
pub struct StructuredSerializedData {
/// Data serialized by SpiderMonkey.
pub serialized: Vec<u8>,
@ -32,6 +32,8 @@ pub struct StructuredSerializedData {
pub exceptions: Option<HashMap<DomExceptionId, DomException>>,
/// Transferred objects.
pub ports: Option<HashMap<MessagePortId, MessagePortImpl>>,
/// Transform streams transferred objects.
pub transform_streams: Option<HashMap<MessagePortId, TransformStreamData>>,
}
impl StructuredSerializedData {

View file

@ -88,7 +88,7 @@ impl Clone for BroadcastMsg {
}
/// File-based blob
#[derive(Clone, Debug, Deserialize, MallocSizeOf, Serialize)]
#[derive(Debug, Deserialize, MallocSizeOf, Serialize)]
pub struct FileBlob {
#[ignore_malloc_size_of = "Uuid are hard(not really)"]
id: Uuid,
@ -164,7 +164,7 @@ impl BroadcastClone for BlobImpl {
}
/// The data backing a DOM Blob.
#[derive(Clone, Debug, Deserialize, MallocSizeOf, Serialize)]
#[derive(Debug, Deserialize, MallocSizeOf, Serialize)]
pub struct BlobImpl {
/// UUID of the blob.
blob_id: BlobId,
@ -177,7 +177,7 @@ pub struct BlobImpl {
}
/// Different backends of Blob
#[derive(Clone, Debug, Deserialize, MallocSizeOf, Serialize)]
#[derive(Debug, Deserialize, MallocSizeOf, Serialize)]
pub enum BlobData {
/// File-based blob, whose content lives in the net process
File(FileBlob),

View file

@ -15,6 +15,12 @@ use strum::EnumIter;
use crate::PortMessageTask;
#[derive(Debug, Deserialize, MallocSizeOf, Serialize)]
pub struct TransformStreamData {
pub readable: (MessagePortId, MessagePortImpl),
pub writable: (MessagePortId, MessagePortImpl),
}
/// All the DOM interfaces that can be transferred.
#[derive(Clone, Copy, Debug, EnumIter)]
pub enum Transferrable {
@ -28,7 +34,7 @@ pub enum Transferrable {
TransformStream,
}
#[derive(Clone, Debug, Deserialize, MallocSizeOf, Serialize)]
#[derive(Debug, Deserialize, MallocSizeOf, Serialize)]
enum MessagePortState {
/// <https://html.spec.whatwg.org/multipage/#detached>
Detached,
@ -42,7 +48,7 @@ enum MessagePortState {
Disabled(bool),
}
#[derive(Clone, Debug, Deserialize, MallocSizeOf, Serialize)]
#[derive(Debug, Deserialize, MallocSizeOf, Serialize)]
/// The data and logic backing the DOM managed MessagePort.
pub struct MessagePortImpl {
/// The current state of the port.