tor-browser

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

tex-image-with-bad-args-from-dom-elements.html (4221B)


      1 <!--
      2 Copyright (c) 2019 The Khronos Group Inc.
      3 Use of this source code is governed by an MIT-style license that can be
      4 found in the LICENSE.txt file.
      5 -->
      6 <!DOCTYPE html>
      7 <html>
      8 <head>
      9 <meta charset="utf-8">
     10 <link rel="stylesheet" href="../../../resources/js-test-style.css"/>
     11 <script src="../../../js/js-test-pre.js"></script>
     12 <script src="../../../js/webgl-test-utils.js"></script>
     13 </head>
     14 <body>
     15 <canvas id="c" width="16" height="16"></canvas>
     16 <div id="description"></div>
     17 <div id="console"></div>
     18 <script>
     19 "use strict";
     20 description('Tests texImage2D with invalid internalformat/format/type combinations from various dom elements');
     21 
     22 debug("<a href='https://www.khronos.org/registry/webgl/specs/latest/2.0/#TEXTURE_TYPES_FORMATS_FROM_DOM_ELEMENTS_TABLE'>Valid internalformat/format/type combinations</a>");
     23 debug("");
     24 
     25 var wtu = WebGLTestUtils;
     26 var gl = wtu.create3DContext("c", undefined, 2);
     27 
     28 var doTexImage = function(domElement) {
     29    var tex = gl.createTexture();
     30    gl.bindTexture(gl.TEXTURE_2D, tex);
     31    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB10_A2UI, gl.RGBA_INTEGER, gl.UNSIGNED_INT_2_10_10_10_REV, domElement);
     32    wtu.glErrorShouldBe(gl, [gl.INVALID_VALUE, gl.INVALID_ENUM, gl.INVALID_OPERATION], "TexImage2D taking RGB10_A2UI/RGBA_INTEGER/UNSIGNED_INT_2_10_10_10_REV should fail");
     33    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RG8, gl.RG, gl.FLOAT, domElement);
     34    wtu.glErrorShouldBe(gl, gl.INVALID_OPERATION, "TexImage2D taking RG8/RG/FLOAT should fail");
     35    gl.deleteTexture(tex);
     36 }
     37 
     38 var createCanvas2DContext = function(width, height) {
     39    var canvas = document.createElement("canvas");
     40    canvas.width = width;
     41    canvas.height = height;
     42    var ctx = canvas.getContext("2d");
     43    ctx.fillRect(0, 0, width, height);
     44    return ctx;
     45 };
     46 
     47 var testImage = function(test) {
     48  debug("HTMLImageElement");
     49  var img = wtu.makeImage(test.src, function() {
     50    doTexImage(img);
     51    setTimeout(runNextTest, 0);
     52  });
     53 }
     54 
     55 var testVideo = function(test) {
     56  debug("HTMLVideoElement (" + test.videoType + ")");
     57  var video = wtu.makeVideo(test.src);
     58  if(!video.canPlayType(test.videoType).replace(/no/, '')) {
     59    debug(test.videoType + " unsupported");
     60    setTimeout(runNextTest, 0);
     61    return;
     62  }
     63  wtu.startPlayingAndWaitForVideo(video, function() {
     64    doTexImage(video);
     65    setTimeout(runNextTest, 0);
     66  });
     67 }
     68 
     69 var testCanvas = function(test) {
     70  var ctx = createCanvas2DContext(test.width, test.height);
     71  debug("HTMLCanvasElement");
     72  doTexImage(ctx.canvas);
     73  setTimeout(runNextTest, 0);
     74 }
     75 
     76 var testImageData = function(test) {
     77  var ctx = createCanvas2DContext(test.width, test.height);
     78  var imageData = ctx.getImageData(0, 0, test.width, test.height);
     79  debug("ImageData");
     80  doTexImage(imageData);
     81  setTimeout(runNextTest, 0);
     82 }
     83 
     84 var testImageBitmap = function(test) {
     85  debug("ImageBitmap");
     86  if(!window.createImageBitmap || !window.ImageBitmap) {
     87    debug("ImageBitmap isn't supported");
     88    setTimeout(runNextTest, 0);
     89    return;
     90  }
     91  var ctx = createCanvas2DContext(test.width, test.height);
     92  createImageBitmap(ctx.canvas, 0, 0, test.width, test.height).then(function(imageBitmap) {
     93    doTexImage(imageBitmap);
     94    setTimeout(runNextTest, 0);
     95  }, function() {
     96    debug("createImageBitmap was rejected");
     97    setTimeout(runNextTest, 0);
     98  });
     99 }
    100 
    101 var tests = [
    102  { type: "canvas", width: 64, height: 64, run: testCanvas },
    103  { type: "image", src: "../../../resources/red-green.png", run: testImage },
    104  { type: "ImageBitmap",width: 64, height: 64, run: testImageBitmap },
    105  { type: "ImageData", width: 64, height: 64, run: testImageData },
    106  { type: "video", src: "../../../resources/red-green.mp4", videoType: 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"', run: testVideo },
    107  { type: "video", src: "../../../resources/red-green.bt601.vp9.webm", videoType: 'video/webm; codecs="vp9"', run: testVideo },
    108  { type: "video", src: "../../../resources/red-green.webmvp8.webm", videoType: 'video/webm; codecs="vp8, vorbis"', run: testVideo },
    109 ];
    110 
    111 var testIndex = 0;
    112 var runNextTest = function() {
    113  if (testIndex < tests.length) {
    114    debug("");
    115    var test = tests[testIndex];
    116    ++testIndex;
    117    test.run(test);
    118  } else {
    119    finishTest();
    120  }
    121 };
    122 
    123 runNextTest();
    124 
    125 </script>
    126 </body>
    127 </html>