tor-browser

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

videoFrame-alpha.any.js (1577B)


      1 // META: global=window,dedicatedworker
      2 
      3 function makeRGBACanvas() {
      4  let canvas = new OffscreenCanvas(32, 32, {alpha: true});
      5  let ctx = canvas.getContext('2d');
      6 
      7  // Opaque red quadrant.
      8  ctx.fillStyle = 'rgba(255, 0, 0, 255)';
      9  ctx.fillRect(0, 0, 16, 16);
     10 
     11  // Opaque blue quadrant.
     12  ctx.fillStyle = 'rgba(0, 255, 0, 255)';
     13  ctx.fillRect(16, 0, 16, 16);
     14 
     15  // Opaque green quadrant.
     16  ctx.fillStyle = 'rgba(0, 0, 255, 255)';
     17  ctx.fillRect(0, 16, 16, 16);
     18 
     19  // Remaining quadrant should be transparent black.
     20  return canvas;
     21 }
     22 
     23 function getPixel(ctx, x, y) {
     24  let data = ctx.getImageData(x, y, 1, 1).data;
     25  return data[0] * 2 ** 24 + data[1] * 2 ** 16 + data[2] * 2 ** 8 + data[3];
     26 }
     27 
     28 function verifyPicture(picture) {
     29  let canvas = new OffscreenCanvas(32, 32, {alpha: true});
     30  let ctx = canvas.getContext('2d');
     31  ctx.drawImage(picture, 0, 0);
     32  assert_equals(getPixel(ctx,  8,  8), 0xFF0000FF);
     33  assert_equals(getPixel(ctx, 24,  8), 0x00FF00FF);
     34  assert_equals(getPixel(ctx,  8, 24), 0x0000FFFF);
     35  assert_equals(getPixel(ctx, 24, 24), 0x00000000);
     36 }
     37 
     38 promise_test(async () => {
     39  let src = makeRGBACanvas();
     40  let frame = new VideoFrame(src, {alpha: 'keep', timestamp: 0});
     41  verifyPicture(frame);
     42  verifyPicture(await createImageBitmap(frame));
     43 }, 'OffscreenCanvas source preserves alpha');
     44 
     45 promise_test(async () => {
     46  let src = makeRGBACanvas().transferToImageBitmap();
     47  let frame = new VideoFrame(src, {alpha: 'keep', timestamp: 0});
     48  verifyPicture(frame);
     49  verifyPicture(await createImageBitmap(frame));
     50 }, 'ImageBitmap source preserves alpha');