On Wed, Aug 10, 2022 at 9:00 AM Daniel Bratell <bratel...@gmail.com> wrote:

> I have one question about what you get back with you call getReader(). You
> write that such code will continue to work. Does that mean that the return
> value is the same or does it mean that what you get back has the exact same
> API surface as what you got before?
>
When getReader() is called without the newly supported { mode: 'byob' }
argument it will continue to return the ReadableStreamDefaultReader
interface. It only returns the new ReadableStreamBYOBReader interface when
that argument (which prior to this change causes getReader() to throw a
TypeError) is passed. So existing code can't observe a difference.

> /Daniel
> On 2022-08-10 17:56, Mike Taylor wrote:
>
> LGTM2
>
> On 8/10/22 9:15 AM, Yoav Weiss wrote:
>
> LGTM1
>
> On Tuesday, August 9, 2022 at 3:39:32 AM UTC+2 Reilly Grant wrote:
>
>> Contact emails
>>
>> reil...@chromium.org
>>
>> Explainer
>>
>> Full explainer should not be necessary; see the Summary section below for
>> an overview of this change
>>
>> Specification
>>
>> https://wicg.github.io/serial/#readable-attribute
>>
>> Summary
>>
>> The SerialPort interface provides a ReadableStream and WritableStream
>> for communication with the connected device. This change updates the
>> underlying data source for the ReadableStream to make it a readable byte
>> stream <https://streams.spec.whatwg.org/#readable-byte-stream>. This is
>> how this stream should have originally been specified but at the time
>> Chromium did not support implementing byte streams in C++. This has
>> recently been fixed
>> <https://bugs.chromium.org/p/chromium/issues/detail?id=1284571> and so
>> this change can be implemented. The change is backwards compatible because
>> existing code calling port.readable.getReader() will continue to work
>> while new code can detect support for BYOB readers by calling getReader({
>> mode: 'byob' }) and catching the TypeError thrown by older
>> implementations.
>>
>> BYOB readers allow developers to specify the buffer into which data is
>> read instead of the stream allocating a buffer for each chunk. In addition
>> to the potential reduction in memory pressure this allows script to control
>> how much data is received in a chunk as the stream cannot return more than
>> there is space for in the provided buffer.
>>
>> The ability to read a particular amount of data from a port has been a
>> frequently requested feature by developers used to programming against the
>> Windows and POSIX APIs for serial devices, which operate on this same
>> "bring your own buffer" principle. The current API, in contrast, requires
>> developers to code defensively against extra unwanted data instead of
>> receiving only what they are ready to process.
>>
>> Blink component
>>
>> Blink>Serial
>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ESerial>
>>
>> TAG review
>>
>> https://github.com/w3ctag/design-reviews/issues/431
>>
>> https://github.com/w3ctag/design-reviews/issues/567
>>
>> TAG review status
>>
>> Not applicable, the W3C TAG has already reviewed the Web Serial and byte
>> stream APIs independently. This change integrates them in an obvious manner.
>>
>>
>> Risks
>> Interoperability and Compatibility
>>
>> Gecko: Harmful (https://mozilla.github.io/standards-positions/#webserial)
>>
>> Mozilla is opposed to the Web Serial API in general. This incremental
>> change is not expected to change their position.
>>
>> WebKit: Negative (https://webkit.org/tracking-prevention)
>>
>> Apple is opposed to the Web Serial API in general. This incremental
>> change is not expected to change their position.
>>
>> Web developers: Positive (
>> https://github.com/WICG/serial/issues/125#issuecomment-786937083)
>>
>> Multiple developers have asked for the ability to read a specific number
>> of bytes from the port, which is enabled by using a BYOB reader.
>>
>> WebView application risks
>>
>> WebView is not supported because this API is not available on Android.
>>
>>
>> Debuggability
>>
>> This feature is debuggable using the normal DevTools JavaScript debugger.
>>
>> Will this feature be supported on all six Blink platforms (Windows, Mac,
>> Linux, Chrome OS, Android, and Android WebView)?
>>
>> No, the Web Serial API is only available on desktop platforms because
>> Android does not provide a serial API. A polyfill
>> <https://github.com/google/web-serial-polyfill> for Android which uses
>> WebUSB (and can be expanded using Web Bluetooth) provides an implementation
>> of the missing platform features. An issue
>> <https://github.com/google/web-serial-polyfill/issues/42> has been filed
>> to update the polyfill with BYOB reader support.
>>
>> Is this feature fully tested by web-platform-tests
>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>> ?
>>
>> Yes (in the patch
>> <https://chromium-review.googlesource.com/c/chromium/src/+/3811977/4/third_party/blink/web_tests/external/wpt/serial/serialPort_readable_byob.https.any.js>
>> )
>>
>> Requires code in //chrome?
>>
>> No
>>
>> Tracking bug
>>
>> https://bugs.chromium.org/p/chromium/issues/detail?id=1182905
>>
>> Sample links
>>
>> https://googlechromelabs.github.io/serial-terminal
>>
>> Estimated milestones
>>
>> M-106
>>
>> Link to entry on the Chrome Platform Status
>>
>> https://chromestatus.com/feature/6716022686482432
>>
>> This intent message was generated by Chrome Platform Status
>> <https://chromestatus.com/> and lovingly edited by hand.
>> Reilly Grant | Software Engineer | reil...@chromium.org | Google Chrome
>> <https://www.google.com/chrome>
>>
> --
> You received this message because you are subscribed to the Google Groups
> "blink-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to blink-dev+unsubscr...@chromium.org.
> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/4c022c60-2d3e-4976-883d-80cbe6639845n%40chromium.org
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/4c022c60-2d3e-4976-883d-80cbe6639845n%40chromium.org?utm_medium=email&utm_source=footer>
> .
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "blink-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to blink-dev+unsubscr...@chromium.org.
> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/e077fb3a-6757-589b-b240-34bf19ace508%40chromium.org
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/e077fb3a-6757-589b-b240-34bf19ace508%40chromium.org?utm_medium=email&utm_source=footer>
> .
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEmk%3DMZDtjZ0rrGkn8Vm2uFnNyXXP6Sh9sONk86VrsBrsLeACg%40mail.gmail.com.

Reply via email to