Channel_postMessage_Blob.any.js (1005B)
1 // META: title=postMessage() with a Blob 2 // META: script=/common/gc.js 3 4 var TARGET = null; 5 var SOURCE = null; 6 var description = "Messages can contain Blobs."; 7 8 var t = async_test("Test Description: " + description); 9 10 var channel = new MessageChannel(); 11 SOURCE = channel.port1; 12 TARGET = channel.port2; 13 TARGET.start(); 14 TARGET.addEventListener("message", t.step_func(TestMessageEvent), true); 15 16 (function() { 17 SOURCE.postMessage({blob: new Blob(['foo', 'bar'])}); 18 })(); 19 garbageCollect(); 20 21 function TestMessageEvent(evt) 22 { 23 assert_true('blob' in evt.data); 24 assert_true(evt.data.blob instanceof Blob); 25 assert_equals(evt.data.blob.size, 6); 26 const reader = new FileReader(); 27 reader.onerror = t.unreached_func('Reading blob failed'); 28 reader.onload = t.step_func(() => { 29 assert_equals(reader.result, 'foobar'); 30 t.done(); 31 }); 32 reader.readAsText(evt.data.blob); 33 }