Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/events/message-port-transferables.html

Issue 2414333003: WebMessaging: Send transferable ArrayBuffers by copy-and-neuter semantics (Closed)
Patch Set: remake Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <script src="../../resources/testharness.js"></script>
3 <script src="../../resources/testharnessreport.js"></script>
4 <body>
5 <script>
6
7 async_test(function(t) {
8 var message = "Hello, world!";
9 var text_encoder = new TextEncoder;
10 var text_decoder = new TextDecoder;
11
12 var channel = new MessageChannel;
13 channel.port1.onmessage = function(e) {
14 assert_equals(e.data.byteLength, message.length);
15 assert_equals(text_decoder.decode(e.data), message);
16 t.done();
17 }
18 channel.port2.onmessage = function(e) {
19 assert_equals(e.data.byteLength, message.length);
20 assert_equals(text_decoder.decode(e.data), message);
21 channel.port2.postMessage(e.data, [e.data.buffer]);
22 };
23
24 var ab = text_encoder.encode(message);
25 assert_equals(ab.byteLength, message.length);
26 channel.port1.postMessage(ab, [ab.buffer]);
27 assert_equals(
28 ab.byteLength, 0,
29 "Byte length of a neutered buffer should be zero.");
30 }, 'Send a transferable ArrayBuffer within a same frame');
31
32 async_test(function(t) {
33 var message = "Hello, world!";
34 var text_encoder = new TextEncoder;
35 var text_decoder = new TextDecoder;
36
37 var frame = document.createElement('iframe');
38 frame.src = 'resources/empty.html';
39 frame.onload = function() {
40 frame.contentWindow.onmessage = function(evt) {
41 var port = evt.data;
42 port.onmessage = function(e) {
43 assert_equals(e.data.byteLength, message.length);
44 assert_equals(text_decoder.decode(e.data), message);
45 port.postMessage(e.data, [e.data.buffer]);
46 };
47 }
48
49 var channel = new MessageChannel;
50 channel.port1.onmessage = function(e) {
51 assert_equals(e.data.byteLength, message.length);
52 assert_equals(text_decoder.decode(e.data), message);
53 t.done();
54 }
55 frame.contentWindow.postMessage(channel.port2, '*', [channel.port2]);
56
57 var ab = text_encoder.encode(message);
58 assert_equals(ab.byteLength, message.length);
59 channel.port1.postMessage(ab, [ab.buffer]);
60 assert_equals(
61 ab.byteLength, 0,
62 "Byte length of a neutered buffer should be zero.");
63 }
64 document.body.appendChild(frame);
65 }, 'Send a transferable ArrayBuffer over frames');
66
67 </script>
68 </body>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698