tor-browser

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

offscreencanvas.transfer.to.imagebitmap.html (3922B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <script src="/html/canvas/resources/canvas-tests.js"></script>
      5 <link rel="help" href="https://html.spec.whatwg.org/#dom-offscreencanvas-transfertoimagebitmap">
      6 
      7 <script id="myWorker" type="text/worker">
      8 
      9 self.onmessage = function(e) {
     10 };
     11 
     12 </script>
     13 
     14 <script>
     15 function makeWorker(script)
     16 {
     17    var blob = new Blob([script]);
     18    return new Worker(URL.createObjectURL(blob));
     19 }
     20 
     21 test(function() {
     22    function testSize(contextType) {
     23        var offscreenCanvas = new OffscreenCanvas(100, 50);
     24        var ctx = offscreenCanvas.getContext(contextType);
     25        var image = offscreenCanvas.transferToImageBitmap();
     26        assert_equals(image.width, 100);
     27        assert_equals(image.height, 50);
     28    }
     29 
     30    testSize('2d');
     31    testSize('webgl');
     32 }, "Test that transferToImageBitmap returns an ImageBitmap with correct width and height");
     33 
     34 test(function() {
     35    function testImageBitmapClr(shouldCallTwice, alphaVal) {
     36        var offscreenCanvas = new OffscreenCanvas(100, 50);
     37        var ctx = offscreenCanvas.getContext('2d', {alpha: alphaVal});
     38        ctx.fillStyle = "#0f0";
     39        ctx.fillRect(0, 0, 100, 50);
     40        var image = offscreenCanvas.transferToImageBitmap();
     41 
     42        if (shouldCallTwice)
     43            image = offscreenCanvas.transferToImageBitmap();
     44 
     45        var drawCanvas = document.createElement('canvas');
     46        drawCanvas.width = 100;
     47        drawCanvas.height = 50;
     48        var dCtx = drawCanvas.getContext('2d');
     49        dCtx.drawImage(image, 0, 0);
     50 
     51        if (shouldCallTwice) {
     52            if (alphaVal)
     53                _assertPixel(drawCanvas, 50,25, 0,0,0,0);
     54            else
     55                _assertPixel(drawCanvas, 50,25, 0,0,0,255);
     56        } else {
     57            _assertPixel(drawCanvas, 50,25, 0,255,0,255);
     58        }
     59    }
     60 
     61    testImageBitmapClr(false, true);
     62    testImageBitmapClr(true, true);
     63    testImageBitmapClr(true, false);
     64 }, "Test that transferToImageBitmap returns an ImageBitmap with correct color");
     65 
     66 test(function() {
     67    var offscreenCanvas = new OffscreenCanvas(100, 50);
     68    var ctx = offscreenCanvas.getContext('2d');
     69    ctx.lineWidth = 10;
     70    var image = offscreenCanvas.transferToImageBitmap();
     71    assert_equals(ctx.lineWidth, 10);
     72 }, "Test that transferToImageBitmap won't change context's property");
     73 
     74 test(function() {
     75    var offscreenCanvas = new OffscreenCanvas(100, 50);
     76    var ctx = offscreenCanvas.getContext('2d');
     77    ctx.rect(0, 0, 25, 50);
     78    ctx.clip();
     79    ctx.translate(20, 20);
     80 
     81    ctx.fillStyle = '#0f0';
     82    var image1 = offscreenCanvas.transferToImageBitmap();
     83    // trasnform should be preserved
     84    ctx.fillRect(0, 0, 10, 10);
     85    var image2 = offscreenCanvas.transferToImageBitmap();
     86 
     87    var drawCanvas = document.createElement('canvas');
     88    drawCanvas.width = 100;
     89    drawCanvas.height = 50;
     90    var dCtx = drawCanvas.getContext('2d');
     91    dCtx.drawImage(image2, 0, 0);
     92    // Verify that transform was carried over.
     93    _assertPixel(drawCanvas, 23,25, 0,255,0,255);
     94    // Verify that clip was carried over.
     95    _assertPixel(drawCanvas, 27,25, 0,0,0,0);
     96 }, "Test that transferToImageBitmap preserves transform");
     97 
     98 async_test(function(t) {
     99    var worker = makeWorker(document.getElementById("myWorker").textContent);
    100    var offscreenCanvas = new OffscreenCanvas(10, 10);
    101    worker.postMessage(offscreenCanvas, [offscreenCanvas]);
    102    assert_throws_dom("InvalidStateError", function() { offscreenCanvas.transferToImageBitmap(); });
    103    t.done();
    104 }, "Test that call transferToImageBitmap on a detached OffscreenCanvas throws an exception");
    105 
    106 test(function() {
    107    var offscreenCanvas = new OffscreenCanvas(10, 10);
    108    assert_throws_dom("InvalidStateError", function() { offscreenCanvas.transferToImageBitmap(); });
    109 }, "Test that transferToImageBitmap without a context throws an exception");
    110 
    111 </script>