Skip to content

Implement readablestreamdefaulttee#34405

Merged
gterzian merged 14 commits intoservo:readablestream-re-implementationfrom
Taym95:implement-ReadableStream-DefaultTee
Dec 9, 2024
Merged

Implement readablestreamdefaulttee#34405
gterzian merged 14 commits intoservo:readablestream-re-implementationfrom
Taym95:implement-ReadableStream-DefaultTee

Conversation

@Taym95
Copy link
Copy Markdown
Member

@Taym95 Taym95 commented Nov 26, 2024

part of #32898


  • ./mach build -d does not report any errors
  • ./mach test-tidy does not report any errors
  • These changes fix #___ (GitHub issue number if applicable)
  • There are tests for these changes OR
  • These changes do not require tests because ___

@Taym95 Taym95 requested a review from gterzian as a code owner November 26, 2024 23:57
Copy link
Copy Markdown
Member

@gterzian gterzian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice progress! Some of those abstract ops we can later also use for the "native" stuff refactoring.

Copy link
Copy Markdown
Member

@gterzian gterzian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, some more good progress...

Cancel2Algorithm,
}

#[dom_struct]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this needs to be a dom struct, rather it can just derive JSTraceable, MallocSizeOf

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dom_struct is needed because of this:

#34405 (comment)

so I can call pull_algorithm again

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, thanks for pointing it out. Maybe we can look later if that is necessary or if an Rc would do(and whether this makes any difference).

Copy link
Copy Markdown
Member

@gterzian gterzian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good progress again.

Note that microtask stuff, which I think we may as well do in this PR as well. It's not more complicated than a native promise handler really.

@Taym95 Taym95 force-pushed the implement-ReadableStream-DefaultTee branch from d98a628 to 1ace19b Compare December 2, 2024 15:49
Copy link
Copy Markdown
Member

@gterzian gterzian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like good progress once again!

Once #34424 merges we should be able to run the tests and get a better idea of where we stand...

#[derive(JSTraceable, MallocSizeOf)]
pub struct TeeReadRequestMicrotask {
#[ignore_malloc_size_of = "mozjs"]
chunk: RootedTraceableBox<Heap<JSVal>>,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think here you need an Rc, because RootedTraceableBox is like dom root for the stack only I believe. (by the way other microtasks are using dom root, but I think those are bad examples).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually Box<Heap is better than Rc<, I think.

@Taym95 Taym95 force-pushed the implement-ReadableStream-DefaultTee branch from 7e3f454 to 5f43f90 Compare December 3, 2024 16:58

/// <https://streams.spec.whatwg.org/#ref-for-read-request-chunk-steps%E2%91%A2>
#[allow(unsafe_code)]
pub fn chunk_steps(&self, chunk: &Box<Heap<JSVal>>) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here you can could pass a safe handle value maybe?

Copy link
Copy Markdown
Member

@gterzian gterzian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So the fix I think is to properly reflect the two dom structs. I have done this for one at gterzian@4e942e8 and it solves one crash, leavng another so I think this needs to be done for TeeUnderlyingSource as well.

@Taym95 Taym95 force-pushed the implement-ReadableStream-DefaultTee branch from bc111ae to b39d35d Compare December 5, 2024 16:17
Signed-off-by: Taym <[email protected]>
@Taym95 Taym95 force-pushed the implement-ReadableStream-DefaultTee branch from 73f636d to 339d992 Compare December 5, 2024 20:19
@gterzian
Copy link
Copy Markdown
Member

gterzian commented Dec 6, 2024

I ended up trying out some stuff, and I think this is a good fix for the above two comments: gterzian@ae4527d#diff-dd564ad757b5b84ac6c3c89c405720952aea8c2f59e3d6ff601761f1fcd1c50bR78

It fixes the crash and leaves us with some unexpected test failures instead...

@Taym95
Copy link
Copy Markdown
Member Author

Taym95 commented Dec 6, 2024

I ended up trying out some stuff, and I think this is a good fix for the above two comments: gterzian@ae4527d#diff-dd564ad757b5b84ac6c3c89c405720952aea8c2f59e3d6ff601761f1fcd1c50bR78

It fixes the crash and leaves us with some unexpected test failures instead...

thanks for looking at it!

@Taym95
Copy link
Copy Markdown
Member Author

Taym95 commented Dec 7, 2024

tests/wpt/tests/streams/readable-streams/tee.any.js test is passing now!

web-platform-test
~~~~~~~~~~~~~~~~~
Ran 57 checks (52 subtests, 5 tests)
Expected results: 57
Unexpected results: 0
OK
 0:08.25 INFO Got 0 unexpected results, with 0 unexpected passes
 0:08.27 wptserve INFO Stopped http server on 127.0.0.1:8443
 0:08.37 wptserve INFO Stopped http server on 127.0.0.1:8003
 0:08.37 wptserve INFO Stopped http server on 127.0.0.1:8001
 0:08.37 wptserve INFO Stopped http server on 127.0.0.1:8444
 0:08.37 wptserve INFO Stopped http server on 127.0.0.1:8445
 0:08.37 wptserve INFO Stopped http server on 127.0.0.1:8002
 0:08.38 wptserve INFO Stopped http server on 127.0.0.1:8446
 0:08.38 wptserve INFO Stopped http server on 127.0.0.1:8000
 0:08.38 wptserve INFO Stopped http server on 127.0.0.1:9000
 0:08.41 wptserve INFO Close on: (<AddressFamily.AF_INET6: 30>, <SocketKind.SOCK_STREAM: 1>, '', '', '')
 0:08.41 wptserve INFO Close on: (<AddressFamily.AF_INET6: 30>, <SocketKind.SOCK_STREAM: 1>, '', '', '')
 0:08.48 INFO Closing logging queue
 0:08.48 INFO queue closed

@Taym95 Taym95 force-pushed the implement-ReadableStream-DefaultTee branch from 41fe029 to 3882f5a Compare December 7, 2024 22:38
@gterzian
Copy link
Copy Markdown
Member

gterzian commented Dec 9, 2024

Ok looks good:

Screenshot 2024-12-09 at 1 54 47 PM

All the unexpected results are actually new passes...

@gterzian gterzian merged commit ba2afcc into servo:readablestream-re-implementation Dec 9, 2024
Taym95 added a commit that referenced this pull request Dec 9, 2024
* Implement readablestreamdefaulttee

Signed-off-by: Taym <[email protected]>

* Create UnderlyingSourceType::Tee each stream

Signed-off-by: Taym <[email protected]>

* Use Dom instead of DomRoot

Signed-off-by: Taym <[email protected]>

* Queue a microtask for readRequest chunk steps

Signed-off-by: Taym <[email protected]>

* fix create_readable_stream

Signed-off-by: Taym <[email protected]>

* Remove unnecessary Rc

Signed-off-by: Taym <[email protected]>

* Use correct doc link

Signed-off-by: Taym <[email protected]>

* Add #[allow(crown::unrooted_must_root)]

Signed-off-by: Taym <[email protected]>

* Fix crash in ClosedPromiseRejectionHandler

Signed-off-by: Taym <[email protected]>

* reflect TeeReadRequest and TeeUnderlyingSource
Signed-off-by: Taym <[email protected]>

* fix can_gc

Signed-off-by: Taym <[email protected]>

* reflect tee source, and fix use of mutable dom for tee source and request

Signed-off-by: gterzian <[email protected]>

* Fix typo that resolves multiple test failures in 'Tee' tests

Signed-off-by: Taym <[email protected]>

* Fix readable-streams/tee.any.js test

Signed-off-by: Taym <[email protected]>

---------

Signed-off-by: Taym <[email protected]>
Signed-off-by: gterzian <[email protected]>
Co-authored-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Taym95 added a commit that referenced this pull request Dec 12, 2024
* Implement readablestreamdefaulttee

Signed-off-by: Taym <[email protected]>

* Create UnderlyingSourceType::Tee each stream

Signed-off-by: Taym <[email protected]>

* Use Dom instead of DomRoot

Signed-off-by: Taym <[email protected]>

* Queue a microtask for readRequest chunk steps

Signed-off-by: Taym <[email protected]>

* fix create_readable_stream

Signed-off-by: Taym <[email protected]>

* Remove unnecessary Rc

Signed-off-by: Taym <[email protected]>

* Use correct doc link

Signed-off-by: Taym <[email protected]>

* Add #[allow(crown::unrooted_must_root)]

Signed-off-by: Taym <[email protected]>

* Fix crash in ClosedPromiseRejectionHandler

Signed-off-by: Taym <[email protected]>

* reflect TeeReadRequest and TeeUnderlyingSource
Signed-off-by: Taym <[email protected]>

* fix can_gc

Signed-off-by: Taym <[email protected]>

* reflect tee source, and fix use of mutable dom for tee source and request

Signed-off-by: gterzian <[email protected]>

* Fix typo that resolves multiple test failures in 'Tee' tests

Signed-off-by: Taym <[email protected]>

* Fix readable-streams/tee.any.js test

Signed-off-by: Taym <[email protected]>

---------

Signed-off-by: Taym <[email protected]>
Signed-off-by: gterzian <[email protected]>
Co-authored-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Taym95 added a commit that referenced this pull request Dec 15, 2024
* Implement readablestreamdefaulttee

Signed-off-by: Taym <[email protected]>

* Create UnderlyingSourceType::Tee each stream

Signed-off-by: Taym <[email protected]>

* Use Dom instead of DomRoot

Signed-off-by: Taym <[email protected]>

* Queue a microtask for readRequest chunk steps

Signed-off-by: Taym <[email protected]>

* fix create_readable_stream

Signed-off-by: Taym <[email protected]>

* Remove unnecessary Rc

Signed-off-by: Taym <[email protected]>

* Use correct doc link

Signed-off-by: Taym <[email protected]>

* Add #[allow(crown::unrooted_must_root)]

Signed-off-by: Taym <[email protected]>

* Fix crash in ClosedPromiseRejectionHandler

Signed-off-by: Taym <[email protected]>

* reflect TeeReadRequest and TeeUnderlyingSource
Signed-off-by: Taym <[email protected]>

* fix can_gc

Signed-off-by: Taym <[email protected]>

* reflect tee source, and fix use of mutable dom for tee source and request

Signed-off-by: gterzian <[email protected]>

* Fix typo that resolves multiple test failures in 'Tee' tests

Signed-off-by: Taym <[email protected]>

* Fix readable-streams/tee.any.js test

Signed-off-by: Taym <[email protected]>

---------

Signed-off-by: Taym <[email protected]>
Signed-off-by: gterzian <[email protected]>
Co-authored-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>
Taym95 added a commit that referenced this pull request Dec 17, 2024
* Implement readablestreamdefaulttee

Signed-off-by: Taym <[email protected]>

* Create UnderlyingSourceType::Tee each stream

Signed-off-by: Taym <[email protected]>

* Use Dom instead of DomRoot

Signed-off-by: Taym <[email protected]>

* Queue a microtask for readRequest chunk steps

Signed-off-by: Taym <[email protected]>

* fix create_readable_stream

Signed-off-by: Taym <[email protected]>

* Remove unnecessary Rc

Signed-off-by: Taym <[email protected]>

* Use correct doc link

Signed-off-by: Taym <[email protected]>

* Add #[allow(crown::unrooted_must_root)]

Signed-off-by: Taym <[email protected]>

* Fix crash in ClosedPromiseRejectionHandler

Signed-off-by: Taym <[email protected]>

* reflect TeeReadRequest and TeeUnderlyingSource
Signed-off-by: Taym <[email protected]>

* fix can_gc

Signed-off-by: Taym <[email protected]>

* reflect tee source, and fix use of mutable dom for tee source and request

Signed-off-by: gterzian <[email protected]>

* Fix typo that resolves multiple test failures in 'Tee' tests

Signed-off-by: Taym <[email protected]>

* Fix readable-streams/tee.any.js test

Signed-off-by: Taym <[email protected]>

---------

Signed-off-by: Taym <[email protected]>
Signed-off-by: gterzian <[email protected]>
Co-authored-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>
sagudev pushed a commit that referenced this pull request Dec 17, 2024
* Implement readablestreamdefaulttee

Signed-off-by: Taym <[email protected]>

* Create UnderlyingSourceType::Tee each stream

Signed-off-by: Taym <[email protected]>

* Use Dom instead of DomRoot

Signed-off-by: Taym <[email protected]>

* Queue a microtask for readRequest chunk steps

Signed-off-by: Taym <[email protected]>

* fix create_readable_stream

Signed-off-by: Taym <[email protected]>

* Remove unnecessary Rc

Signed-off-by: Taym <[email protected]>

* Use correct doc link

Signed-off-by: Taym <[email protected]>

* Add #[allow(crown::unrooted_must_root)]

Signed-off-by: Taym <[email protected]>

* Fix crash in ClosedPromiseRejectionHandler

Signed-off-by: Taym <[email protected]>

* reflect TeeReadRequest and TeeUnderlyingSource
Signed-off-by: Taym <[email protected]>

* fix can_gc

Signed-off-by: Taym <[email protected]>

* reflect tee source, and fix use of mutable dom for tee source and request

Signed-off-by: gterzian <[email protected]>

* Fix typo that resolves multiple test failures in 'Tee' tests

Signed-off-by: Taym <[email protected]>

* Fix readable-streams/tee.any.js test

Signed-off-by: Taym <[email protected]>

---------

Signed-off-by: Taym <[email protected]>
Signed-off-by: gterzian <[email protected]>
Co-authored-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>
github-merge-queue bot pushed a commit that referenced this pull request Dec 17, 2024
…troller` (#34064)

* Re-implement readablestream: basics and default reader and controller

---------

Co-authored-by: Jason Tsai <[email protected]>
Signed-off-by: Wu Wayne <[email protected]>

Add remaining WebIDLs of ReadableStream (#32605)

* Add Reader's WebIDL files

* Add necessary methods in ReadableStream.webidl

Signed-off-by: Wu Wayne <[email protected]>

Create safe wrapper for JSFunctions (#32620)

* Create safe wrapper for JSFunctions

Signed-off-by: Bentaimia Haddadi <[email protected]>

* Add assert to check if the  name ends in a null character

Signed-off-by: Bentaimia Haddadi <[email protected]>

* Create macro to wrap unsafe extern "C" function calls

Signed-off-by: Bentaimia Haddadi <[email protected]>

* Remove WRAPPER_FN

Signed-off-by: Bentaimia Haddadi <[email protected]>

* Add macro example documentation

Signed-off-by: Bentaimia Haddadi <[email protected]>

* Use  C-string literals

Signed-off-by: Bentaimia Haddadi <[email protected]>

* Ensure name is Cstr type

Signed-off-by: Bentaimia Haddadi <[email protected]>

* Scope #[allow(unsafe_code)]

Signed-off-by: Bentaimia Haddadi <[email protected]>

---------

Signed-off-by: Bentaimia Haddadi <[email protected]>
Signed-off-by: Wu Wayne <[email protected]>

Start implementation of default controller and reader

Start implementation of default controller and reader

* implement basic internal slots, with todos

Signed-off-by: gterzian <[email protected]>

* enum for controller

Signed-off-by: gterzian <[email protected]>

* re-implement native controller methods

Signed-off-by: gterzian <[email protected]>

* add calling into pull algo

Signed-off-by: gterzian <[email protected]>

* more details on chunk enqueuing

Signed-off-by: gterzian <[email protected]>

* add fulfill read request, clean-up warnings

Signed-off-by: gterzian <[email protected]>

* read request and reader typing

Signed-off-by: gterzian <[email protected]>

* allow for more than one non-native underlying source type

Signed-off-by: gterzian <[email protected]>

* add todo for should pull

Signed-off-by: gterzian <[email protected]>

* add underlying source dom struct container

Signed-off-by: gterzian <[email protected]>

* remove rc around source type

* add default controller init in stream constructor

* setup source container with prototype of source dict

* clean-up docs, dispatch of controller in pull algo call

* turn off SM streams

* remove prototype setting on underlying source container

* fix read request promise resolving

* tidy

* clean-up js conversions in read req handlers

* add queue with sizes concept

* use dom in pull promise handlers

* Demonstrate using dictionary as callback this object.

* move value with size to a struct

* fmt

* put readable stream state in a cell

* nits in expectations

* remove allow unroot by passing read result directly to promise resolving

* tidy

* root default controller inside call_pull_if_needed

---------

Signed-off-by: gterzian <[email protected]>
Co-authored-by: Josh Matthews <[email protected]>
Signed-off-by: Wu Wayne <[email protected]>

ReadableStream: implement Cancel and Locked (#33136)

* implement Locked

* implement Cancel and close

Signed-off-by: Wu Wayne <[email protected]>

Add GetPromiseIsHandled and SetAnyPromiseIsHandled to Promise

Signed-off-by: Taym <[email protected]>

mach fmt

Signed-off-by: Taym <[email protected]>

Readablestream default controller: get desired size (#33497)

Signed-off-by: gterzian <[email protected]>

stream: implement controller close (#33498)

Signed-off-by: gterzian <[email protected]>

implement stream default controller error (#33503)

Signed-off-by: gterzian <[email protected]>

Readablestream default controller: enqueue (#33528)

* Implement ReadableStreamDefaultControllerMethods::Enqueue

Signed-off-by: Wu Wayne <[email protected]>

* Add spec comments

Signed-off-by: Wu Wayne <[email protected]>

---------

Signed-off-by: Wu Wayne <[email protected]>

readablestream default controller: fulfill read requests (#33542)

Signed-off-by: gterzian <[email protected]>

Fix extract_size_algorithm (#33561)

Signed-off-by: Wu Wayne <[email protected]>

Readablestream default controller: use strategy size (#33551)

* readablestream default controller: use strategy size, fallible enqueue

Signed-off-by: gterzian <[email protected]>

docs

* readablestream default controller: clear strategy size

Signed-off-by: gterzian <[email protected]>

* prevent potential re-borrow panics when calling into the strategy size

Signed-off-by: gterzian <[email protected]>

* document readablestream constructor

Signed-off-by: gterzian <[email protected]>

---------

Signed-off-by: gterzian <[email protected]>

Readablestream: impl default controller should pull, start algo (#33586)

* implement should-pull algo for default controller

Signed-off-by: gterzian <[email protected]>

* add start algorithm setup for default controller

Signed-off-by: gterzian <[email protected]>

---------

Signed-off-by: gterzian <[email protected]>

implement promise native handling for start and pull algorithms (#33603)

Signed-off-by: gterzian <[email protected]>

Implement ReadableStreamDefaultReader (#33160)

* Implement ReadableStreamDefaultReader

 Make the stream mutable
 readable-stream-reader-generic-release
 Proper error types when releasing
 Closed
 Cancel

Signed-off-by: Taym <[email protected]>

* follow the spec more closely

Signed-off-by: Taym <[email protected]>

---------

Signed-off-by: Taym <[email protected]>

Implement ReadableStreamDefaultReader read (#34007)

* Implement ReadableStreamDefaultReader read

Signed-off-by: Taym <[email protected]>

* Perform readRequest’s error steps with stream.stored_error

Signed-off-by: Taym <[email protected]>

---------

Signed-off-by: Taym <[email protected]>

Improve ReadableStreamDefaultReader close (#34014)

* improve ReadableStreamDefaultReader close

Signed-off-by: Taym <[email protected]>

* remove resolve_closed_promise

Signed-off-by: Taym <[email protected]>

---------

Signed-off-by: Taym <[email protected]>

Use Rc<Box<[u8]>> for queue to optimize get_in_memory_bytes

Signed-off-by: Taym <[email protected]>
Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>

* Improve read_a_chunk and stop_reading implemntation (#34077)

Signed-off-by: Taym <[email protected]>
Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Implement ReadableStreamDefaultReader::Constructor  (#34056)

* Implement ReadableStreamDefaultReader::Constructor

Signed-off-by: Taym <[email protected]>

* make start_reading returns ReadableStreamDefaultReader

Signed-off-by: Taym <[email protected]>

* Fix can_gc
Signed-off-by: Taym <[email protected]>

* Add canGc to ReadableStream::GetReader

Signed-off-by: Taym <[email protected]>

---------

Signed-off-by: Taym <[email protected]>
Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Readablestream fix CanGc (#34080)

Signed-off-by: Taym <[email protected]>
Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* correct ReadableStream::error_native implementation and fix clippy warnings (#34088)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* turn assertion of stream present on controller on a early return with false (#34097)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Fix already mutably borrowed crash (#34105)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Refactor `get_in_memory_bytes` to return `Option<Vec<u8>> and avoid `unreachable!` panic (#34123)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Set ReadableStream ReadableStreamDefaultReader in start_reading (#34125)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Fix  Unhandled rejection with value: object `TypeError: stream is not locked` (#34204)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Fix  assert!(self.is_readable()) crash in ReadableStream::close (#34207)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* fix call to to_js_object in underlying source algos (#34098)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* do not assume presence of a stream when performing pull steps (#34244)

* do not assume presence of a stream when performing pull steps

Signed-off-by: gterzian <[email protected]>

* add doc comments

Co-authored-by: Taym Haddadi <[email protected]>
Signed-off-by: Gregory Terzian <[email protected]>

---------

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Gregory Terzian <[email protected]>
Co-authored-by: Taym Haddadi <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* gracefully handle failure of underlying source algorithms (#34243)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* ensure result of calling start algo is an object (#34245)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* return js failed error if underlying source constructor threw (#34246)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Use JSVal for ValueWithSize::value (#34259)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* fix release reader lock, (#34255)

fix setting stream on controller in new,
fix matching fallthrough,
reduce visibility of controller error method

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* in stream cancel, reject promist if locked (#34271)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Fix UnderlyingSourceContainer::call_start_algorithm (#34277)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* implement controller cancel steps, fix stream cancel method (#34301)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* fix conditional in perform pull steps (#34324)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* set reader closed promise to one resolved with undefined if stream closed on init (#34321)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* fix init of stream and controller (#34323)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Stream: Fix reborrow in controller enqueue, and fix error and exception handling. (#34338)

* fix re-borrow in controller enqueue

Signed-off-by: gterzian <[email protected]>

* do not call to_jsval on JSFailed error in enqueue

Signed-off-by: gterzian <[email protected]>

* fix error and exception handling in controller enqueue

Signed-off-by: gterzian <[email protected]>

* remove TODO about correctness of stored error, since this was done as part of the switch to a js val.

Signed-off-by: gterzian <[email protected]>

---------

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Stream: Fix incorrect "this" object in underlying source callbacks (#34368)

* in controller close, throw type error if stream cannot be closed

Signed-off-by: gterzian <[email protected]>

* store original js object for underlying source, for use as this object in callbacks

Signed-off-by: gterzian <[email protected]>

---------

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* fix conditional logic in enqueue to ensure pull is called into (#34375)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Stream: Fix bytelength queueing strategy (#34376)

* fix handling of value that is not an object in bytelength queuing strategy

Signed-off-by: gterzian <[email protected]>

* return type error if strategy size call fails, to prevent panic because no exception is pending

Signed-off-by: gterzian <[email protected]>

---------

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* set correct  default count queuing size strategy (#34389)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* use proto in stream constructor (#34441)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* fix edge cases in get_desired_size (#34440)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Stream: fix algo and strategy calls error handling. (#34424)

* fix error handling in cancel steps

Signed-off-by: gterzian <[email protected]>

* in pull steps, reject promise if pull algo throws

Signed-off-by: gterzian <[email protected]>

* if start algorithm fails, rethrow the error

Signed-off-by: gterzian <[email protected]>

* when the strategy size fails, directly get the pending exception and use it to error the stream

Signed-off-by: gterzian <[email protected]>

* add error handling to enqueue value with size

Signed-off-by: gterzian <[email protected]>

* when enqueueing a value errors, ensure we error and stream with the same error used to throw an exception

Signed-off-by: gterzian <[email protected]>

---------

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* fix native use of streams (#34468)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Implement readablestreamdefaulttee (#34405)

* Implement readablestreamdefaulttee

Signed-off-by: Taym <[email protected]>

* Create UnderlyingSourceType::Tee each stream

Signed-off-by: Taym <[email protected]>

* Use Dom instead of DomRoot

Signed-off-by: Taym <[email protected]>

* Queue a microtask for readRequest chunk steps

Signed-off-by: Taym <[email protected]>

* fix create_readable_stream

Signed-off-by: Taym <[email protected]>

* Remove unnecessary Rc

Signed-off-by: Taym <[email protected]>

* Use correct doc link

Signed-off-by: Taym <[email protected]>

* Add #[allow(crown::unrooted_must_root)]

Signed-off-by: Taym <[email protected]>

* Fix crash in ClosedPromiseRejectionHandler

Signed-off-by: Taym <[email protected]>

* reflect TeeReadRequest and TeeUnderlyingSource
Signed-off-by: Taym <[email protected]>

* fix can_gc

Signed-off-by: Taym <[email protected]>

* reflect tee source, and fix use of mutable dom for tee source and request

Signed-off-by: gterzian <[email protected]>

* Fix typo that resolves multiple test failures in 'Tee' tests

Signed-off-by: Taym <[email protected]>

* Fix readable-streams/tee.any.js test

Signed-off-by: Taym <[email protected]>

---------

Signed-off-by: Taym <[email protected]>
Signed-off-by: gterzian <[email protected]>
Co-authored-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Align ReadableStreamDefaultReader with spec and fix additional tests in default-reader.any.js (#34531)

And fix crate::DomTypeHolder usage

* Align ReadableStreamDefaultReader with spec and fix additional tests in default-reader.any.js

Signed-off-by: Taym <[email protected]>

* make reader rooted in Constructor and acquire_default_reader

Signed-off-by: Taym <[email protected]>

* Remove spaces

Signed-off-by: Taym <[email protected]>

---------

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Streams: fetch stream chunks should be uint8 arrays (#34553)

* fetch stream chunks should be uint8 arrays

Signed-off-by: gterzian <[email protected]>

* fix clippy

Signed-off-by: Taym Haddadi <[email protected]>

---------

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>
Co-authored-by: Taym Haddadi <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Update wpt test for ReadableStream reimplementation (#34579)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Fix ignore_malloc_size_of in readablestream tee (#34578)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Remove incorrect use of handle array, fail test safely by giving only one reason (#34560)

Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Update more wpt test for ReadableStream reimplementation (#34598)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Fix doc and rename Tee to DefaultTee (#34612)

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* fix: Address review comments

Signed-off-by: Taym <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>

* Update response-stream-with-broken-then.any.js.ini test expectation

Signed-off-by: Taym Haddadi <[email protected]>

* fix reflect_dom_object can_gc

Signed-off-by: Taym Haddadi <[email protected]>

* Fix compositeReason for DefaultTeeUnderlyingSource (#34627)

* Fix compositeReason for DefaultTeeUnderlyingSource

Signed-off-by: Taym Haddadi <[email protected]>

* Update test

Signed-off-by: Taym Haddadi <[email protected]>

---------

Signed-off-by: Taym Haddadi <[email protected]>

* Last fixes stream (#34636)

* remove now unsused from_js method of readable stream

* fix documenation of error steps

* return type error instread of panicking on a todo, when trying to construct a stream of type bytes

Signed-off-by: gterzian <[email protected]>

---------

Signed-off-by: Gregory Terzian <[email protected]>

* fix crown rooting related errors (#34662)

Signed-off-by: Gregory Terzian <[email protected]>

---------

Signed-off-by: Taym <[email protected]>
Signed-off-by: gterzian <[email protected]>
Signed-off-by: Taym Haddadi <[email protected]>
Signed-off-by: Gregory Terzian <[email protected]>
Co-authored-by: Wu Wayne <[email protected]>
Co-authored-by: Taym Haddadi <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants