| Index: third_party/WebKit/LayoutTests/fast/events/message-port-transferables.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/events/message-port-transferables.html b/third_party/WebKit/LayoutTests/fast/events/message-port-transferables.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3abe4ec1123d1c15013a95fd745fe9623bd3e70e
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/fast/events/message-port-transferables.html
|
| @@ -0,0 +1,68 @@
|
| +<!DOCTYPE html>
|
| +<script src="../../resources/testharness.js"></script>
|
| +<script src="../../resources/testharnessreport.js"></script>
|
| +<body>
|
| +<script>
|
| +
|
| +async_test(function(t) {
|
| + var message = "Hello, world!";
|
| + var text_encoder = new TextEncoder;
|
| + var text_decoder = new TextDecoder;
|
| +
|
| + var channel = new MessageChannel;
|
| + channel.port1.onmessage = function(e) {
|
| + assert_equals(e.data.byteLength, message.length);
|
| + assert_equals(text_decoder.decode(e.data), message);
|
| + t.done();
|
| + }
|
| + channel.port2.onmessage = function(e) {
|
| + assert_equals(e.data.byteLength, message.length);
|
| + assert_equals(text_decoder.decode(e.data), message);
|
| + channel.port2.postMessage(e.data, [e.data.buffer]);
|
| + };
|
| +
|
| + var ab = text_encoder.encode(message);
|
| + assert_equals(ab.byteLength, message.length);
|
| + channel.port1.postMessage(ab, [ab.buffer]);
|
| + assert_equals(
|
| + ab.byteLength, 0,
|
| + "Byte length of a neutered buffer should be zero.");
|
| +}, 'Send a transferable ArrayBuffer within a same frame');
|
| +
|
| +async_test(function(t) {
|
| + var message = "Hello, world!";
|
| + var text_encoder = new TextEncoder;
|
| + var text_decoder = new TextDecoder;
|
| +
|
| + var frame = document.createElement('iframe');
|
| + frame.src = 'resources/empty.html';
|
| + frame.onload = function() {
|
| + frame.contentWindow.onmessage = function(evt) {
|
| + var port = evt.data;
|
| + port.onmessage = function(e) {
|
| + assert_equals(e.data.byteLength, message.length);
|
| + assert_equals(text_decoder.decode(e.data), message);
|
| + port.postMessage(e.data, [e.data.buffer]);
|
| + };
|
| + }
|
| +
|
| + var channel = new MessageChannel;
|
| + channel.port1.onmessage = function(e) {
|
| + assert_equals(e.data.byteLength, message.length);
|
| + assert_equals(text_decoder.decode(e.data), message);
|
| + t.done();
|
| + }
|
| + frame.contentWindow.postMessage(channel.port2, '*', [channel.port2]);
|
| +
|
| + var ab = text_encoder.encode(message);
|
| + assert_equals(ab.byteLength, message.length);
|
| + channel.port1.postMessage(ab, [ab.buffer]);
|
| + assert_equals(
|
| + ab.byteLength, 0,
|
| + "Byte length of a neutered buffer should be zero.");
|
| + }
|
| + document.body.appendChild(frame);
|
| +}, 'Send a transferable ArrayBuffer over frames');
|
| +
|
| +</script>
|
| +</body>
|
|
|