text: <!--
  
  /*
  ** Copyright (c) 2012 The Khronos Group Inc.
  **
  ** Permission is hereby granted, free of charge, to any person obtaining a
  ** copy of this software and/or associated documentation files (the
  ** "Materials"), to deal in the Materials without restriction, including
  ** without limitation the rights to use, copy, modify, merge, publish,
  ** distribute, sublicense, and/or sell copies of the Materials, and to
  ** permit persons to whom the Materials are furnished to do so, subject to
  ** the following conditions:
  **
  ** The above copyright notice and this permission notice shall be included
  ** in all copies or substantial portions of the Materials.
  **
  ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
  */
  
  -->
  
  <!DOCTYPE html>
  <html>
  <head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="../../resources/js-test-style.css"/>
  <script src="../../resources/js-test-pre.js"></script>
  <script src="../resources/webgl-test-utils.js"></script>
  </head>
  <body>
  <div id="description"></div>
  <div id="console"></div>
  
  <script>
  "use strict";
  description("Test bufferData/bufferSubData with ArrayBuffer input");
  
  debug('Regression test for <a href="https://bugs.webkit.org/show_bug.cgi?id=41884">https://bugs.webkit.org/show_bug.cgi?id=41884</a> : <code>Implement bufferData and bufferSubData with ArrayBuffer as input</code>');
  
  var wtu = WebGLTestUtils;
  var gl = wtu.create3DContext();
  shouldBeNonNull("gl");
  
  var array = new ArrayBuffer(128);
  shouldBeNonNull("array");
  
  var buf = gl.createBuffer();
  shouldBeNonNull("buf");
  
  gl.bufferData(gl.ARRAY_BUFFER, array, gl.STATIC_DRAW);
  wtu.glErrorShouldBe(gl, gl.INVALID_OPERATION);
  
  gl.bindBuffer(gl.ARRAY_BUFFER, buf);
  wtu.glErrorShouldBe(gl, gl.NO_ERROR);
  
  gl.bufferData(gl.ARRAY_BUFFER, -10, gl.STATIC_DRAW);
  wtu.glErrorShouldBe(gl, gl.INVALID_VALUE);
  
  gl.bufferData(gl.ARRAY_BUFFER, null, gl.STATIC_DRAW);
  wtu.glErrorShouldBe(gl, gl.INVALID_VALUE);
  
  // This should not crash, but the selection of the overload is ambiguous per Web IDL.
  gl.bufferData(gl.ARRAY_BUFFER, null, gl.STATIC_DRAW);
  gl.getError();
  
  gl.bufferData(gl.ARRAY_BUFFER, array, gl.STATIC_DRAW);
  wtu.glErrorShouldBe(gl, gl.NO_ERROR);
  
  array = new ArrayBuffer(64);
  
  gl.bufferSubData(gl.ARRAY_BUFFER, -10, array);
  wtu.glErrorShouldBe(gl, gl.INVALID_VALUE);
  
  gl.bufferSubData(gl.ARRAY_BUFFER, -10, new Float32Array(8));
  wtu.glErrorShouldBe(gl, gl.INVALID_VALUE);
  
  gl.bufferSubData(gl.ARRAY_BUFFER, 10, array);
  wtu.glErrorShouldBe(gl, gl.NO_ERROR);
  
  wtu.shouldThrowOrGenerateGLError(gl, [gl.NO_ERROR, gl.INVALID_VALUE], "gl.bufferSubData(gl.ARRAY_BUFFER, 10, null)");
  
  var successfullyParsed = true;
  </script>
  
  <script src="../../resources/js-test-post.js"></script>
  </body>
  </html>
  