| Index: third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage.html
|
| diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage.html
|
| index 16b4df9a994679066899b9690004a01a0c7fed19..8fc9778b2a64bea4cde2ec3043b238291b513ec7 100644
|
| --- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage.html
|
| +++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage.html
|
| @@ -52,4 +52,90 @@ promise_test(t => {
|
| });
|
| }, 'postMessage to a ServiceWorker (and back via MessagePort)');
|
|
|
| +promise_test(t => {
|
| + var script = 'resources/postmessage-transferables-worker.js';
|
| + var scope = 'resources/blank.html';
|
| + var sw = navigator.serviceWorker;
|
| +
|
| + var message = 'Hello, world!';
|
| + var text_encoder = new TextEncoder;
|
| + var text_decoder = new TextDecoder;
|
| +
|
| + return service_worker_unregister_and_register(t, script, scope)
|
| + .then(r => {
|
| + add_completion_callback(() => r.unregister());
|
| +
|
| + var ab = text_encoder.encode(message);
|
| + assert_equals(ab.byteLength, message.length);
|
| + r.installing.postMessage(ab, [ab.buffer]);
|
| + assert_equals(text_decoder.decode(ab), '');
|
| + assert_equals(ab.byteLength, 0);
|
| +
|
| + return new Promise(resolve => { sw.onmessage = resolve; });
|
| + })
|
| + .then(e => {
|
| + // Verify the integrity of the transferred array buffer.
|
| + assert_equals(e.data.content, message);
|
| + assert_equals(e.data.byteLength, message.length);
|
| + return new Promise(resolve => { sw.onmessage = resolve; });
|
| + })
|
| + .then(e => {
|
| + // Verify the integrity of the array buffer sent back from
|
| + // ServiceWorker via Client.postMessage.
|
| + assert_equals(text_decoder.decode(e.data), message);
|
| + assert_equals(e.data.byteLength, message.length);
|
| + return new Promise(resolve => { sw.onmessage = resolve; });
|
| + })
|
| + .then(e => {
|
| + // Verify that the array buffer on ServiceWorker is neutered.
|
| + assert_equals(e.data.content, '');
|
| + assert_equals(e.data.byteLength, 0);
|
| + });
|
| + }, 'postMessage a transferable ArrayBuffer between ServiceWorker and Client');
|
| +
|
| +promise_test(t => {
|
| + var script = 'resources/postmessage-transferables-worker.js';
|
| + var scope = 'resources/blank.html';
|
| + var message = 'Hello, world!';
|
| + var text_encoder = new TextEncoder;
|
| + var text_decoder = new TextDecoder;
|
| + var port;
|
| +
|
| + return service_worker_unregister_and_register(t, script, scope)
|
| + .then(r => {
|
| + add_completion_callback(() => r.unregister());
|
| +
|
| + var channel = new MessageChannel;
|
| + port = channel.port1;
|
| + r.installing.postMessage(undefined, [channel.port2]);
|
| +
|
| + var ab = text_encoder.encode(message);
|
| + assert_equals(ab.byteLength, message.length);
|
| + port.postMessage(ab, [ab.buffer]);
|
| + assert_equals(text_decoder.decode(ab), '');
|
| + assert_equals(ab.byteLength, 0);
|
| +
|
| + return new Promise(resolve => { port.onmessage = resolve; });
|
| + })
|
| + .then(e => {
|
| + // Verify the integrity of the transferred array buffer.
|
| + assert_equals(e.data.content, message);
|
| + assert_equals(e.data.byteLength, message.length);
|
| + return new Promise(resolve => { port.onmessage = resolve; });
|
| + })
|
| + .then(e => {
|
| + // Verify the integrity of the array buffer sent back from
|
| + // ServiceWorker via Client.postMessage.
|
| + assert_equals(text_decoder.decode(e.data), message);
|
| + assert_equals(e.data.byteLength, message.length);
|
| + return new Promise(resolve => { port.onmessage = resolve; });
|
| + })
|
| + .then(e => {
|
| + // Verify that the array buffer on ServiceWorker is neutered.
|
| + assert_equals(e.data.content, '');
|
| + assert_equals(e.data.byteLength, 0);
|
| + });
|
| + }, 'postMessage a transferable ArrayBuffer between ServiceWorker and Client' +
|
| + ' over MessagePort');
|
| +
|
| </script>
|
|
|