<!DOCTYPE html>
<html>
<script id='2d-vertex-shader' type='x-shader/x-vertex'>
    attribute vec4 a_Position; 
    void main() { gl_Position = a_Position; }
</script>
<script id='2d-fragment-shader' type='x-shader/x-fragment'>
    void main( void ) {}
</script>
<body>
<canvas id="canvas1" width="20" height="20"></canvas>
<script>
if (window.testRunner)
    testRunner.dumpAsText();

// Boilerplate set-up.
let canvas = document.getElementById('canvas1');
let gl = canvas.getContext('webgl');

let vShader = gl.createShader(gl.VERTEX_SHADER);
let vShaderScript = document.getElementById('2d-vertex-shader');
gl.shaderSource(vShader, vShaderScript.text);
gl.compileShader(vShader);

let fShader = gl.createShader(gl.FRAGMENT_SHADER);
let fShaderScript = document.getElementById('2d-fragment-shader');
gl.shaderSource(fShader, fShaderScript.text);
gl.compileShader(fShader);

let program = gl.createProgram();
gl.attachShader(program, vShader);
gl.attachShader(program, fShader);
gl.linkProgram(program);
gl.useProgram(program);

gl.getExtension("OES_element_index_uint");
let ext = gl.getExtension('ANGLE_instanced_arrays');

// Execute a draw that is valid, if strange.
let buffer = gl.createBuffer();
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint8ClampedArray([256, 256, 256, 256]), gl.STATIC_DRAW);
ext.drawElementsInstancedANGLE(gl.TRIANGLES, 2, gl.UNSIGNED_SHORT, 0, gl.UNSIGNED_SHORT);

// Execute a draw that is invalid because an element index is too large.
buffer = gl.createBuffer();
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([65536, 137413, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536, 65536]), gl.STATIC_DRAW);
gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, 10, new Uint8ClampedArray([256, 256, 256, 256, 256, 256]));
gl.drawElements(gl.TRIANGLES, 1, gl.UNSIGNED_INT, 0);

// Now execute a similarly invalid call, that uses a smaller simulated buffer than the previous invalid call.
buffer = gl.createBuffer();
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint8ClampedArray([256, 256, 256, 256, 256, 256]), gl.STATIC_DRAW);
gl.drawElements(gl.TRIANGLES, 1, gl.UNSIGNED_SHORT, 0);
</script>
</html>