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>