New issue
Advanced search Search tips

Issue 894838 link

Starred by 6 users

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac , Fuchsia
Pri: 1
Type: Bug

Blocked on:
issue 894357
issue 897046

Blocking:
issue 398312



Sign in to add a comment

Implement Transferable Streams

Project Member Reported by ricea@chromium.org, Oct 12

Issue description

Permit readable, writable and transform streams to be transferred using postMessage().

See explainer: https://github.com/whatwg/streams/blob/master/transferable-streams-explainer.md
 
Blockedon: 894357
Blockedon: 897046
Project Member

Comment 3 by bugdroid1@chromium.org, Oct 26

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ae32414ad3c79f47553c03cda78164f15b24f938

commit ae32414ad3c79f47553c03cda78164f15b24f938
Author: Adam Rice <ricea@chromium.org>
Date: Fri Oct 26 09:01:01 2018

Implement ReadableStreamSerialize and Deserialize

These operations will be used for transferable streams. The operations
are implemented in JavaScript and exposed to C++ on the
ReadableStreamOperations object.

See design doc at
https://docs.google.com/document/d/1_KuZzg5c3pncLJPFa8SuVm23AP4tft6mzPCL5at3I9M/edit

The new operations are not used outside of tests so far.

The implementation currently has the serious issue that if the page
modifies the MessagePort or MessageChannel interfaces, it will use the
modified versions instead of the originals. Because the operations are
still unused this CL by itself it safe. It will be fixed in a followup
CL.

BUG=894838

Change-Id: Iff40cd9fdd5de39dfce8fbb2b845c1fbd5cbcab0
Reviewed-on: https://chromium-review.googlesource.com/c/1282516
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Commit-Queue: Adam Rice <ricea@chromium.org>
Cr-Commit-Position: refs/heads/master@{#603035}
[modify] https://crrev.com/ae32414ad3c79f47553c03cda78164f15b24f938/third_party/blink/renderer/core/streams/CommonOperations.js
[modify] https://crrev.com/ae32414ad3c79f47553c03cda78164f15b24f938/third_party/blink/renderer/core/streams/ReadableStream.js
[modify] https://crrev.com/ae32414ad3c79f47553c03cda78164f15b24f938/third_party/blink/renderer/core/streams/WritableStream.js
[modify] https://crrev.com/ae32414ad3c79f47553c03cda78164f15b24f938/third_party/blink/renderer/core/streams/readable_stream_operations.cc
[modify] https://crrev.com/ae32414ad3c79f47553c03cda78164f15b24f938/third_party/blink/renderer/core/streams/readable_stream_operations.h
[modify] https://crrev.com/ae32414ad3c79f47553c03cda78164f15b24f938/third_party/blink/renderer/core/streams/readable_stream_operations_test.cc

Blocking: 398312
Project Member

Comment 5 by bugdroid1@chromium.org, Nov 13

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/68ea9d19aa19457ed327dcebd937a093caa5d371

commit 68ea9d19aa19457ed327dcebd937a093caa5d371
Author: Adam Rice <ricea@chromium.org>
Date: Tue Nov 13 05:13:29 2018

Make ReadableStreamSerialize operation take a |port| parameter

It turns out to better to create the MessagePort early in C++ and then
pass it to ReadableStreamSerialize. Make ReadableStreamSerialize take a
second argument instead of creating its own MessageChannel.

This also enables us to remove MessageChannel from the binding object.

Also add wrapper methods on ReadableStream to abstract out the V8 Extras
implementation.

No user-visible changes.

BUG=894838

Change-Id: I2616855d34a925915919245ec10338463ac5ef37
Reviewed-on: https://chromium-review.googlesource.com/c/1329813
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Commit-Queue: Adam Rice <ricea@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607498}
[modify] https://crrev.com/68ea9d19aa19457ed327dcebd937a093caa5d371/third_party/blink/renderer/bindings/core/v8/initialize_v8_extras_binding.cc
[modify] https://crrev.com/68ea9d19aa19457ed327dcebd937a093caa5d371/third_party/blink/renderer/core/streams/ReadableStream.js
[modify] https://crrev.com/68ea9d19aa19457ed327dcebd937a093caa5d371/third_party/blink/renderer/core/streams/readable_stream.cc
[modify] https://crrev.com/68ea9d19aa19457ed327dcebd937a093caa5d371/third_party/blink/renderer/core/streams/readable_stream.h
[modify] https://crrev.com/68ea9d19aa19457ed327dcebd937a093caa5d371/third_party/blink/renderer/core/streams/readable_stream_operations.cc
[modify] https://crrev.com/68ea9d19aa19457ed327dcebd937a093caa5d371/third_party/blink/renderer/core/streams/readable_stream_operations.h
[modify] https://crrev.com/68ea9d19aa19457ed327dcebd937a093caa5d371/third_party/blink/renderer/core/streams/readable_stream_operations_test.cc
[modify] https://crrev.com/68ea9d19aa19457ed327dcebd937a093caa5d371/third_party/blink/renderer/core/streams/readable_stream_test.cc

Status: Started (was: Assigned)
Project Member

Comment 7 by bugdroid1@chromium.org, Nov 20

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a1e223ebc2b6186f951cef4c763aae4b3124063b

commit a1e223ebc2b6186f951cef4c763aae4b3124063b
Author: Adam Rice <ricea@chromium.org>
Date: Tue Nov 20 14:18:46 2018

Implement serialization of ReadableStream

Enable ReadableStream objects to be transferred by postMessage().
Internally, the ReadableStream is converted to a MessagePortChannel and
it is that that is transferred. This involves adding a "stream_channels"
field to the TransferableMessage mojo struct for the channels that will
be used by ReadableStream (and in future WritableStream and
TransferableStream objects).

Additional code is added to V8ScriptValueSerializer and
V8ScriptValueDeserializer to recognise ReadableStream objects.
SerializedScriptValue has new methods and an array of
MessagePortChannels as a member variable to transfer them.

The new code is behind the "TransferableStreams" Blink feature and must
be explicitly activated. A set of new layout tests provides basic
verification that postMessage() of ReadableStream objects work. They are
run with the feature enabled via a new VirtualTestSuite.

The changes are covered in more detail in the design doc:
https://docs.google.com/document/d/1_KuZzg5c3pncLJPFa8SuVm23AP4tft6mzPCL5at3I9M/edit

Bug: 894838
Cq-Include-Trybots: luci.chromium.try:linux_mojo
Change-Id: I032306415aa0c4e146af25439f42bcff70436416
Reviewed-on: https://chromium-review.googlesource.com/c/1315367
Commit-Queue: Adam Rice <ricea@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Reviewed-by: Jeremy Roman <jbroman@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609688}
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/content/browser/message_port_provider.cc
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/content/common/content_param_traits.cc
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/content/public/android/java/src/org/chromium/content/browser/AppWebMessagePort.java
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/VirtualTestSuites
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/resources/echo-iframe.html
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/resources/helpers.js
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/resources/receiving-shared-worker.js
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/resources/receiving-worker.js
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/resources/sending-shared-worker.js
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/resources/sending-worker.js
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/resources/service-worker-iframe.html
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/resources/service-worker.js
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/service-worker-expected.txt
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/service-worker.html
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/shared-worker-expected.txt
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/shared-worker.html
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/window-expected.txt
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/window.html
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/worker-expected.txt
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/http/tests/streams/transferable/worker.html
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/virtual/transferable-streams/http/tests/streams/transferable/README.txt
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/virtual/transferable-streams/http/tests/streams/transferable/service-worker-expected.txt
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/virtual/transferable-streams/http/tests/streams/transferable/shared-worker-expected.txt
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/virtual/transferable-streams/http/tests/streams/transferable/window-expected.txt
[add] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/WebKit/LayoutTests/virtual/transferable-streams/http/tests/streams/transferable/worker-expected.txt
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/common/messaging/transferable_message_struct_traits.cc
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/public/common/messaging/transferable_message.h
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/public/common/messaging/transferable_message_struct_traits.h
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/public/mojom/messaging/transferable_message.mojom
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/bindings/core/v8/serialization/serialization_tag.h
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.cc
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/bindings/core/v8/serialization/transferables.h
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.cc
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.h
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_deserializer_for_modules.cc
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_deserializer_for_modules.h
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/core/messaging/blink_transferable_message.cc
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/core/messaging/blink_transferable_message_struct_traits.cc
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/core/messaging/blink_transferable_message_struct_traits.h
[modify] https://crrev.com/a1e223ebc2b6186f951cef4c763aae4b3124063b/third_party/blink/renderer/core/streams/readable_stream.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Nov 28

Project Member

Comment 9 by bugdroid1@chromium.org, Nov 29

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/37ad5a5c64611fcdab6abd9b401e7040472768a1

commit 37ad5a5c64611fcdab6abd9b401e7040472768a1
Author: Adam Rice <ricea@chromium.org>
Date: Thu Nov 29 11:44:51 2018

Support transfer of WritableStream

Allow WritableStream objects to be transferred with postMessage(). Add
support for serialization and deserialization of WritableStreams.

WritableStreams share the stream_ports array with ReadableStreams, using
indexes starting after the last ReadableStream in the array.

As with ReadableStreams, the functionality is hidden behind the
TransferableStreams blink feature, which much be enabled explicitly for
it to work.

This CL only contains rudimentary tests. In-depth layout tests will be
added later.

BUG=894838

Change-Id: I237f740e4750faa5976481baa161c85bacd51687
Reviewed-on: https://chromium-review.googlesource.com/c/1353034
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Commit-Queue: Adam Rice <ricea@chromium.org>
Cr-Commit-Position: refs/heads/master@{#612151}
[modify] https://crrev.com/37ad5a5c64611fcdab6abd9b401e7040472768a1/third_party/blink/renderer/bindings/core/v8/serialization/serialization_tag.h
[modify] https://crrev.com/37ad5a5c64611fcdab6abd9b401e7040472768a1/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.cc
[modify] https://crrev.com/37ad5a5c64611fcdab6abd9b401e7040472768a1/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h
[modify] https://crrev.com/37ad5a5c64611fcdab6abd9b401e7040472768a1/third_party/blink/renderer/bindings/core/v8/serialization/transferables.h
[modify] https://crrev.com/37ad5a5c64611fcdab6abd9b401e7040472768a1/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.cc
[modify] https://crrev.com/37ad5a5c64611fcdab6abd9b401e7040472768a1/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc
[add] https://crrev.com/37ad5a5c64611fcdab6abd9b401e7040472768a1/third_party/blink/web_tests/http/tests/streams/transferable/writable-stream-expected.txt
[add] https://crrev.com/37ad5a5c64611fcdab6abd9b401e7040472768a1/third_party/blink/web_tests/http/tests/streams/transferable/writable-stream.html
[add] https://crrev.com/37ad5a5c64611fcdab6abd9b401e7040472768a1/third_party/blink/web_tests/virtual/transferable-streams/http/tests/streams/transferable/writable-stream-expected.txt

Project Member

Comment 10 by bugdroid1@chromium.org, Nov 30

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/06537480fdb5763e905be127b5cf54a352dfd9c5

commit 06537480fdb5763e905be127b5cf54a352dfd9c5
Author: Adam Rice <ricea@chromium.org>
Date: Fri Nov 30 11:40:35 2018

Permit TransformStreams to be sent via postMessage()

Add serialization and deserialization code for TransformStream. Each
TransformStream is serialized as two MessagePortChannels, one attached
to the readable side and the other attached to the writable. These
channels are stored in the |stream_ports| array after the channels for
ReadableStream and WritableStream objects.

Also add a two-argument (readable, writable) constructor for
TransformStream. This is used to create a TransformStream during
deserialization. The constructor does not touch JavaScript and cannot
fail. Also remove the |stream_| member from the TransformStream class as
it is no longer needed.

As with ReadableStream and WritableStream, the TransferableStreams blink
feature must be explicitly enabled to use this.

Rudimentary layout tests are included in this CL. Tests of backpressure
and other features will be added later.

A temporary copy of test-utils.js has been added to
http/tests/streams/resources to support the new tests. It will removed
again once they are upstreamed.

BUG=894838

Change-Id: I451d6a31947e8ea2df0178b5bd63300e9adc651e
Reviewed-on: https://chromium-review.googlesource.com/c/1354736
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Commit-Queue: Adam Rice <ricea@chromium.org>
Cr-Commit-Position: refs/heads/master@{#612617}
[modify] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/renderer/bindings/core/v8/serialization/serialization_tag.h
[modify] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.cc
[modify] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h
[modify] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/renderer/bindings/core/v8/serialization/transferables.h
[modify] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.cc
[modify] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc
[modify] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/renderer/core/streams/transform_stream.cc
[modify] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/renderer/core/streams/transform_stream.h
[modify] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/renderer/core/streams/transform_stream_test.cc
[add] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/web_tests/http/tests/streams/resources/test-utils.js
[add] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/web_tests/http/tests/streams/transferable/transform-stream-expected.txt
[add] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/web_tests/http/tests/streams/transferable/transform-stream.html
[add] https://crrev.com/06537480fdb5763e905be127b5cf54a352dfd9c5/third_party/blink/web_tests/virtual/transferable-streams/http/tests/streams/transferable/transform-stream-expected.txt

Project Member

Comment 11 by bugdroid1@chromium.org, Nov 30

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fef049ce3cbf105e7e1fb6402fe8b5727b38846d

commit fef049ce3cbf105e7e1fb6402fe8b5727b38846d
Author: Adam Rice <ricea@chromium.org>
Date: Fri Nov 30 11:53:09 2018

Don't enable transferable streams for AudioWorklet

AudioWorklet has "MessagePort" on the global object but not
"DOMException". The V8 Extras transferable streams implementation needs
"DOMException" to be on the global object so that it can copy it to the
bindings object and construct a DOMException when an object cannot be
cloned.

Disable transferable streams for audio worklet by not copying
"MessagePort" to the bindings object.

BUG=894838,910471

Change-Id: Ia3bd3a5610d4aa442671fab1c1dc9f20c5c4c5e9
Reviewed-on: https://chromium-review.googlesource.com/c/1356462
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Commit-Queue: Adam Rice <ricea@chromium.org>
Cr-Commit-Position: refs/heads/master@{#612618}
[modify] https://crrev.com/fef049ce3cbf105e7e1fb6402fe8b5727b38846d/third_party/blink/renderer/bindings/core/v8/initialize_v8_extras_binding.cc

Project Member

Comment 12 by bugdroid1@chromium.org, Dec 3

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/81b98c2dc192d227efb02e719cbcbd9b3dcc480b

commit 81b98c2dc192d227efb02e719cbcbd9b3dcc480b
Author: Adam Rice <ricea@chromium.org>
Date: Mon Dec 03 10:29:23 2018

Upgrade TransferableStreams feature to experimental

Set the status of the "TransferableStreams" feature to "experimental". This
means that it is enabled by default for layout tests, and behind the
"experimental web platform features" in the browser.

Remove the virtual test suite for the feature.

BUG=894838

Change-Id: I0b1efdbbcaf08448e7578eea2ef859cea1930cbc
Reviewed-on: https://chromium-review.googlesource.com/c/1355299
Commit-Queue: Adam Rice <ricea@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613037}
[modify] https://crrev.com/81b98c2dc192d227efb02e719cbcbd9b3dcc480b/third_party/blink/renderer/platform/runtime_enabled_features.json5
[modify] https://crrev.com/81b98c2dc192d227efb02e719cbcbd9b3dcc480b/third_party/blink/web_tests/VirtualTestSuites
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/http/tests/streams/transferable/service-worker-expected.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/http/tests/streams/transferable/shared-worker-expected.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/http/tests/streams/transferable/transform-stream-expected.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/http/tests/streams/transferable/window-expected.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/http/tests/streams/transferable/worker-expected.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/http/tests/streams/transferable/writable-stream-expected.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/virtual/transferable-streams/http/tests/streams/transferable/README.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/virtual/transferable-streams/http/tests/streams/transferable/service-worker-expected.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/virtual/transferable-streams/http/tests/streams/transferable/shared-worker-expected.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/virtual/transferable-streams/http/tests/streams/transferable/transform-stream-expected.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/virtual/transferable-streams/http/tests/streams/transferable/window-expected.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/virtual/transferable-streams/http/tests/streams/transferable/worker-expected.txt
[delete] https://crrev.com/8b2b44cabcf0b7867e61f96a989d063886a1c840/third_party/blink/web_tests/virtual/transferable-streams/http/tests/streams/transferable/writable-stream-expected.txt

Project Member

Comment 13 by bugdroid1@chromium.org, Dec 3

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/265f3a34e34e170d387e531f774f36e97052e3f1

commit 265f3a34e34e170d387e531f774f36e97052e3f1
Author: Adam Rice <ricea@chromium.org>
Date: Mon Dec 03 12:52:54 2018

Add fast test for whether transferable streams are enabled

Add a minimal test for whether transferable streams are functioning or
not. This can be used to determine whether they have been shipped or
not. The test is in its own directory so that it can be added to the
virtual/stable test suite without any other tests.

This will ensure we don't accidentally ship transferable streams.

BUG=894838

Change-Id: I2de66a55fc1c72ddd742f1d192a152a9264064df
Reviewed-on: https://chromium-review.googlesource.com/c/1356723
Commit-Queue: Adam Rice <ricea@chromium.org>
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613060}
[modify] https://crrev.com/265f3a34e34e170d387e531f774f36e97052e3f1/third_party/blink/web_tests/VirtualTestSuites
[add] https://crrev.com/265f3a34e34e170d387e531f774f36e97052e3f1/third_party/blink/web_tests/http/tests/streams/transferable/enabled/enabled.html
[add] https://crrev.com/265f3a34e34e170d387e531f774f36e97052e3f1/third_party/blink/web_tests/virtual/stable/http/tests/streams/transferable/enabled/README.txt
[add] https://crrev.com/265f3a34e34e170d387e531f774f36e97052e3f1/third_party/blink/web_tests/virtual/stable/http/tests/streams/transferable/enabled/enabled-expected.txt

Project Member

Comment 14 by bugdroid1@chromium.org, Dec 5

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bb5dadf60ffef4482ed90007e8c75f879a554cbc

commit bb5dadf60ffef4482ed90007e8c75f879a554cbc
Author: Adam Rice <ricea@chromium.org>
Date: Wed Dec 05 09:33:39 2018

Additional functional tests for transferring ReadableStream

Add additional layout tests for transferable ReadableStreams to verify
they function correctly. These will be upstreamed to wpt once
standardisation is done.

Also allow booleans to be passed through as reasons.

recording-stream.js is copied unmodified from
external/wpt/streams/resources as it will temporarily be needed
until these tests are upstreamed.

BUG=894838

Change-Id: I05ab51fbab015298eaaf0f5b20a3d59ed26fcee0
Reviewed-on: https://chromium-review.googlesource.com/c/1345706
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Commit-Queue: Adam Rice <ricea@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613918}
[modify] https://crrev.com/bb5dadf60ffef4482ed90007e8c75f879a554cbc/third_party/blink/renderer/core/streams/CommonOperations.js
[modify] https://crrev.com/bb5dadf60ffef4482ed90007e8c75f879a554cbc/third_party/blink/web_tests/http/tests/streams/README.md
[add] https://crrev.com/bb5dadf60ffef4482ed90007e8c75f879a554cbc/third_party/blink/web_tests/http/tests/streams/resources/recording-streams.js
[add] https://crrev.com/bb5dadf60ffef4482ed90007e8c75f879a554cbc/third_party/blink/web_tests/http/tests/streams/transferable/readable-stream.html
[add] https://crrev.com/bb5dadf60ffef4482ed90007e8c75f879a554cbc/third_party/blink/web_tests/http/tests/streams/transferable/reason.html
[modify] https://crrev.com/bb5dadf60ffef4482ed90007e8c75f879a554cbc/third_party/blink/web_tests/http/tests/streams/transferable/resources/helpers.js

Project Member

Comment 15 by bugdroid1@chromium.org, Dec 10

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3580d40275aa68532993a535af9a6a7faf314afb

commit 3580d40275aa68532993a535af9a6a7faf314afb
Author: Adam Rice <ricea@chromium.org>
Date: Mon Dec 10 06:52:24 2018

Add test for worker termination

Add a test for terminating a worker while a message is in transit
through a transferred stream. Messages sent after a worker is terminated
should be silently dropped.

BUG=894838

Change-Id: If3c3ddef9667dec62c53eba90e056ad278dbcffb
Reviewed-on: https://chromium-review.googlesource.com/c/1365000
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Commit-Queue: Adam Rice <ricea@chromium.org>
Cr-Commit-Position: refs/heads/master@{#615060}
[add] https://crrev.com/3580d40275aa68532993a535af9a6a7faf314afb/third_party/blink/web_tests/http/tests/streams/transferable/resources/echo-worker.js
[modify] https://crrev.com/3580d40275aa68532993a535af9a6a7faf314afb/third_party/blink/web_tests/http/tests/streams/transferable/worker.html

Project Member

Comment 16 by bugdroid1@chromium.org, Jan 10

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cbbf7b5071e038c8f697b99b283f05cdee215116

commit cbbf7b5071e038c8f697b99b283f05cdee215116
Author: Adam Rice <ricea@chromium.org>
Date: Thu Jan 10 05:42:04 2019

Fix WritableStream serialisation

Fix WritableStream::Serialize() to call the V8 extra function
WritableStreamSerialize with the internal stream object rather than the
wrapper.

Also add a set of tests for transferring WritableStream objects.

recording-streams.js is copied unchanged from the wpt version
for use in the new tests. It will be removed again once they
are upstreamed.

Also a minor simplification in CommonOperations.js.

BUG=894838

Change-Id: I489a3685fa4ed1f00b950c10a0e28c6e27ec2c48
Reviewed-on: https://chromium-review.googlesource.com/c/1402302
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Commit-Queue: Adam Rice <ricea@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621473}
[modify] https://crrev.com/cbbf7b5071e038c8f697b99b283f05cdee215116/third_party/blink/renderer/core/streams/CommonOperations.js
[modify] https://crrev.com/cbbf7b5071e038c8f697b99b283f05cdee215116/third_party/blink/renderer/core/streams/writable_stream.cc
[modify] https://crrev.com/cbbf7b5071e038c8f697b99b283f05cdee215116/third_party/blink/web_tests/http/tests/streams/transferable/writable-stream.html

Sign in to add a comment