createImageBitmap-origin.sub.html (1823B)
1 <!DOCTYPE html> 2 <meta charset=utf-8> 3 <title>createImageBitmap: origin-clean flag</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="/common/get-host-info.sub.js"></script> 7 <script src="/common/media.js"></script> 8 <script src="/html/canvas/resources/canvas-tests.js"></script> 9 <div id=log></div> 10 <script> 11 12 function assert_origin_unclean_getImageData(bitmap) { 13 const context = document.createElement("canvas").getContext("2d"); 14 context.drawImage(bitmap, 0, 0); 15 assert_throws_dom("SecurityError", () => { 16 context.getImageData(0, 0, 1, 1); 17 }); 18 } 19 20 function assert_origin_unclean_drawImage(bitmap) { 21 const canvas = document.createElement('canvas'); 22 const ctx = canvas.getContext('2d'); 23 ctx.drawImage(bitmap, 0, 0); 24 assert_throws_dom('SecurityError', () => canvas.toDataURL()); 25 } 26 27 function assert_origin_unclean_transferFromImageBitmap(bitmap) { 28 var canvas = document.createElement('canvas'); 29 var ctx = canvas.getContext('bitmaprenderer'); 30 ctx.transferFromImageBitmap(bitmap); 31 assert_throws_dom('SecurityError', () => canvas.toDataURL()); 32 } 33 34 forEachCanvasSource(get_host_info().HTTP_REMOTE_ORIGIN, 35 get_host_info().HTTP_ORIGIN, 36 (name, factory) => { 37 promise_test(function() { 38 return factory().then(createImageBitmap).then(assert_origin_unclean_getImageData); 39 }, `${name}: origin unclear getImageData`); 40 promise_test(function() { 41 return factory().then(createImageBitmap).then(assert_origin_unclean_drawImage); 42 }, `${name}: origin unclear 2dContext.drawImage`); 43 promise_test(function() { 44 return factory().then(createImageBitmap).then(assert_origin_unclean_transferFromImageBitmap); 45 }, `${name}: origin unclear bitmaprenderer.transferFromImageBitmap`); 46 }); 47 </script>