Permit readable, writable and transform streams to be transferred using postMessage(). See explainer: https://github.com/whatwg/streams/blob/master/transferable-streams-explainer.md
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
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
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
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/c5d30387058ced52f3007b1430e3539d113134ce commit c5d30387058ced52f3007b1430e3539d113134ce Author: Adam Rice <ricea@chromium.org> Date: Wed Nov 28 09:23:28 2018 Add JavaScript for WritableStream serialization At the V8 Extras implementation of WritableStream serialization, as well as the C++ wrappers. No user-visible behaviour changes. BUG=894838 Change-Id: Iae828b0f5b67508ab1b9ea7099a24635968888c4 Reviewed-on: https://chromium-review.googlesource.com/c/1352114 Reviewed-by: Yutaka Hirano <yhirano@chromium.org> Commit-Queue: Adam Rice <ricea@chromium.org> Cr-Commit-Position: refs/heads/master@{#611610} [modify] https://crrev.com/c5d30387058ced52f3007b1430e3539d113134ce/third_party/blink/renderer/core/streams/CommonStrings.js [modify] https://crrev.com/c5d30387058ced52f3007b1430e3539d113134ce/third_party/blink/renderer/core/streams/ReadableStream.js [modify] https://crrev.com/c5d30387058ced52f3007b1430e3539d113134ce/third_party/blink/renderer/core/streams/WritableStream.js [modify] https://crrev.com/c5d30387058ced52f3007b1430e3539d113134ce/third_party/blink/renderer/core/streams/writable_stream.cc [modify] https://crrev.com/c5d30387058ced52f3007b1430e3539d113134ce/third_party/blink/renderer/core/streams/writable_stream.h [modify] https://crrev.com/c5d30387058ced52f3007b1430e3539d113134ce/third_party/blink/renderer/core/streams/writable_stream_test.cc
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
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
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
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
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
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
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
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
Comment 1 by ricea@chromium.org
, Oct 12