| // META: title=postMessage() with a Blob | |
| 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); | |
| } |