tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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    }