tor-browser

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

transferFromImageBitmap-null-offscreen.html (2336B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>Canvas's ImageBitmapRenderingContext test</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <link rel="help" href="https://html.spec.whatwg.org/multipage/scripting.html#the-imagebitmap-rendering-context">
      7 <script>
      8 var width = 10;
      9 var height = 10;
     10 
     11 function testCanvas(bitmapCanvas, r, g, b, a)
     12 {
     13    var myCanvas = document.createElement('canvas');
     14    myCanvas.width = width;
     15    myCanvas.height = height;
     16    var myCtx = myCanvas.getContext('2d');
     17    myCtx.drawImage(bitmapCanvas, 0, 0);
     18    var color = myCtx.getImageData(5, 5, 1, 1).data;
     19    assert_array_equals(color, [r, g, b, a]);
     20 }
     21 
     22 promise_test(function() {
     23    function testTransferFromImageBitmapNullability(greenImage, redImage) {
     24        var bitmapCanvas = new OffscreenCanvas(width,height);
     25        var bitmapCtx = bitmapCanvas.getContext('bitmaprenderer');
     26        bitmapCtx.transferFromImageBitmap(greenImage);
     27 
     28        // Make sure the bitmap renderer canvas is filled correctly.
     29        testCanvas(bitmapCanvas, 0, 255, 0, 255);
     30 
     31        // Test if passing null resets the bitmap renderer canvas.
     32        // Drawing the resetted canvas cannot change the destination canvas.
     33        bitmapCtx.transferFromImageBitmap(null);
     34        testCanvas(bitmapCanvas, 0, 0, 0, 0);
     35 
     36        // Test if we can redraw the bitmap canvas correctly after reset.
     37        bitmapCtx.transferFromImageBitmap(redImage);
     38        testCanvas(bitmapCanvas, 255, 0, 0, 255);
     39    }
     40 
     41    var greenCanvas = document.createElement('canvas');
     42    greenCanvas.width = width;
     43    greenCanvas.height = height;
     44    var greenCtx = greenCanvas.getContext('2d');
     45    greenCtx.fillStyle = '#0f0';
     46    greenCtx.fillRect(0, 0, width, height);
     47 
     48    var redCanvas = document.createElement('canvas');
     49    redCanvas.width = width;
     50    redCanvas.height = height;
     51    var redCtx = redCanvas.getContext('2d');
     52    redCtx.fillStyle = '#f00';
     53    redCtx.fillRect(0, 0, width, height);
     54 
     55    return Promise.all([
     56        createImageBitmap(greenCanvas),
     57        createImageBitmap(redCanvas),
     58    ]).then(([greenImage, redImage]) => {
     59        testTransferFromImageBitmapNullability(greenImage, redImage);
     60    });
     61 },'Test that transferFromImageBitmap(null) discards the previously transferred image');
     62 
     63 </script>