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