// META: title=postMessage() with a Blob // META: script=/common/gc.js 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'])}); })(); garbageCollect(); 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); }