| <!DOCTYPE html> |
| <html> |
| <head> |
| <title> postMessage() with a Blob </title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <div id=log></div> |
| <script> |
| var TARGET = null; |
| var SOURCE = null; |
| var description = "Messages can contain Blobs."; |
| |
| var t = async_test("Test Description: " + description); |
| |
| var channel = new MessageChannel(); |
| SOURCE = channel.port1; |
| TARGET = channel.port2; |
| TARGET.start(); |
| TARGET.addEventListener("message", t.step_func(TestMessageEvent), true); |
| |
| (function() { |
| SOURCE.postMessage({blob: new Blob(['foo', 'bar'])}); |
| })(); |
| // TODO(https://github.com/web-platform-tests/wpt/issues/7899): Change to |
| // some sort of cross-browser GC trigger. |
| if (self.gc) self.gc(); |
| |
| function TestMessageEvent(evt) |
| { |
| assert_true('blob' in evt.data); |
| assert_true(evt.data.blob instanceof Blob); |
| assert_equals(evt.data.blob.size, 6); |
| const reader = new FileReader(); |
| reader.onerror = t.unreached_func('Reading blob failed'); |
| reader.onload = t.step_func(() => { |
| assert_equals(reader.result, 'foobar'); |
| t.done(); |
| }); |
| reader.readAsText(evt.data.blob); |
| } |
| </script> |
| </body> |
| </html> |