tor-browser

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

createImageBitmap-serializable.html (1817B)


      1 <!DOCTYPE html>
      2 <meta charset=utf-8>
      3 <title>createImageBitmap serialize test</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="/common/namespaces.js"></script>
      7 <script src="/common/media.js"></script>
      8 <script src="common.sub.js"></script>
      9 <script src="/common/get-host-info.sub.js"></script>
     10 <div id=log></div>
     11 <script>
     12 let worker, continuations = {};
     13 setup(function() {
     14    worker = new Worker("transfer-worker.js");
     15    worker.addEventListener("message", function(event) {
     16        let { name, bitmap } = event.data;
     17        if (continuations.hasOwnProperty(name)) {
     18            continuations[name](bitmap);
     19        }
     20    });
     21 });
     22 
     23 for (let { name, factory } of imageSourceTypes) {
     24    promise_test(function(t) {
     25        return factory().then(createImageBitmap).then(function(bitmap) {
     26            assert_equals(bitmap.width, 20);
     27            assert_equals(bitmap.height, 20);
     28 
     29            worker.postMessage({ name: t.name, bitmap: bitmap });
     30 
     31            assert_equals(bitmap.width, 20);
     32            assert_equals(bitmap.height, 20);
     33 
     34            return new Promise(function(resolve) {
     35                continuations[t.name] = resolve;
     36            });
     37        }).then(function(bitmap) {
     38            assert_class_string(bitmap, "ImageBitmap");
     39            assert_equals(bitmap.width, 20);
     40            assert_equals(bitmap.height, 20);
     41        });
     42    }, `Serialize ImageBitmap created from ${name}`);
     43 }
     44 
     45 promise_test(async (t) => {
     46  const url = get_host_info().REMOTE_ORIGIN + '/images/pattern.png';
     47  const image = await makeMakeHTMLImage(url)();
     48  const bitmap = await createImageBitmap(image);
     49 
     50  assert_throws_dom('DataCloneError', () => worker.postMessage(bitmap));
     51 }, 'Serializing a non-origin-clean ImageBitmap throws.');
     52 </script>