mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
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:
parent
d8294fa423
commit
5b2305784a
16 changed files with 129 additions and 227 deletions
|
@ -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,
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue