<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[179859] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/179859">179859</a></dd>
<dt>Author</dt> <dd>roger_fong@apple.com</dd>
<dt>Date</dt> <dd>2015-02-09 17:02:28 -0800 (Mon, 09 Feb 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>WebGL: Update 1.0.2 conformance layout tests and address new failure.
https://bugs.webkit.org/show_bug.cgi?id=141408.
&lt;rdar://problem/19773236&gt;

Reviewed by Dean Jackson.

Tests covered by updated 1.0.2 conformance tests.

* html/canvas/WebGLRenderingContextBase.cpp: 
Return null string instead of empty string if parameter validation fails.
(WebCore::WebGLRenderingContextBase::getProgramInfoLog):
(WebCore::WebGLRenderingContextBase::getShaderInfoLog):
(WebCore::WebGLRenderingContextBase::getShaderSource):

* fast/canvas/webgl/bad-arguments-test-expected.txt: Removed.
* fast/canvas/webgl/bad-arguments-test.html: Removed. Redundant test case.
* webgl/1.0.2/resources/webgl_test_files/README.md:
* webgl/1.0.2/resources/webgl_test_files/conformance/attribs/gl-disabled-vertex-attrib.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/context/context-creation-and-destruction.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-compressed-texture-s3tc.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-debug-shaders.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-depth-texture.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/glsl/misc/shader-with-array-of-structs-containing-arrays.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/misc/bad-arguments-test.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/misc/webgl-specific.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/more/functions/uniformMatrixBadArgs.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/more/unit.js:
* webgl/1.0.2/resources/webgl_test_files/conformance/more/util.js:
(VBO.prototype.use):
* webgl/1.0.2/resources/webgl_test_files/conformance/rendering/multisample-corruption.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/resources/fragmentShader.frag:
* webgl/1.0.2/resources/webgl_test_files/conformance/resources/glsl-generator.js:
* webgl/1.0.2/resources/webgl_test_files/conformance/resources/vertexShader.vert:
* webgl/1.0.2/resources/webgl_test_files/conformance/resources/webgl-test-utils.js:
(WebGLTestUtils):
* webgl/1.0.2/resources/webgl_test_files/test-guidelines.md:
* webgl/1.0.2/resources/webgl_test_files/webgl-conformance-tests.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesREADMEmd">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/README.md</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceattribsgldisabledvertexattribhtml">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/attribs/gl-disabled-vertex-attrib.html</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformancecontextcontextcreationanddestructionhtml">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/context/context-creation-and-destruction.html</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceextensionswebglcompressedtextures3tchtml">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-compressed-texture-s3tc.html</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceextensionswebgldebugshadershtml">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-debug-shaders.html</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceextensionswebgldepthtexturehtml">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-depth-texture.html</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceglslmiscshaderwitharrayofstructscontainingarrayshtml">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/glsl/misc/shader-with-array-of-structs-containing-arrays.html</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformancemiscbadargumentstesthtml">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/misc/bad-arguments-test.html</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformancemiscwebglspecifichtml">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/misc/webgl-specific.html</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformancemorefunctionsuniformMatrixBadArgshtml">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/functions/uniformMatrixBadArgs.html</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformancemoreunitjs">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/unit.js</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformancemoreutiljs">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/util.js</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformancerenderingmultisamplecorruptionhtml">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/rendering/multisample-corruption.html</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceresourcesfragmentShaderfrag">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/fragmentShader.frag</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceresourcesglslgeneratorjs">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/glsl-generator.js</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceresourcesvertexShadervert">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/vertexShader.vert</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceresourceswebgltestutilsjs">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/webgl-test-utils.js</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_filestestguidelinesmd">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/test-guidelines.md</a></li>
<li><a href="#trunkLayoutTestswebgl102resourceswebgl_test_fileswebglconformancetestshtml">trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/webgl-conformance-tests.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGLRenderingContextBasecpp">trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastcanvaswebglbadargumentstestexpectedtxt">trunk/LayoutTests/fast/canvas/webgl/bad-arguments-test-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcanvaswebglbadargumentstesthtml">trunk/LayoutTests/fast/canvas/webgl/bad-arguments-test.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/ChangeLog        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -1,3 +1,35 @@
</span><ins>+2015-02-09  Roger Fong  &lt;roger_fong@apple.com&gt;
+
+        WebGL: Update 1.0.2 conformance layout tests and address new failure.
+        https://bugs.webkit.org/show_bug.cgi?id=141408.
+        &lt;rdar://problem/19773236&gt;
+
+        Reviewed by Dean Jackson.
+
+        * fast/canvas/webgl/bad-arguments-test-expected.txt: Removed.
+        * fast/canvas/webgl/bad-arguments-test.html: Removed. Redundant test case.
+        * webgl/1.0.2/resources/webgl_test_files/README.md:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/attribs/gl-disabled-vertex-attrib.html:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/context/context-creation-and-destruction.html:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-compressed-texture-s3tc.html:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-debug-shaders.html:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-depth-texture.html:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/glsl/misc/shader-with-array-of-structs-containing-arrays.html:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/misc/bad-arguments-test.html:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/misc/webgl-specific.html:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/more/functions/uniformMatrixBadArgs.html:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/more/unit.js:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/more/util.js:
+        (VBO.prototype.use):
+        * webgl/1.0.2/resources/webgl_test_files/conformance/rendering/multisample-corruption.html:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/resources/fragmentShader.frag:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/resources/glsl-generator.js:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/resources/vertexShader.vert:
+        * webgl/1.0.2/resources/webgl_test_files/conformance/resources/webgl-test-utils.js:
+        (WebGLTestUtils):
+        * webgl/1.0.2/resources/webgl_test_files/test-guidelines.md:
+        * webgl/1.0.2/resources/webgl_test_files/webgl-conformance-tests.html:
+
</ins><span class="cx"> 2015-02-09  Jer Noble  &lt;jer.noble@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [WebAudio] AudioBufferSourceNodes should accurately play backwards if given a negative playbackRate.
</span></span></pre></div>
<a id="trunkLayoutTestsfastcanvaswebglbadargumentstestexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/canvas/webgl/bad-arguments-test-expected.txt (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/canvas/webgl/bad-arguments-test-expected.txt        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/fast/canvas/webgl/bad-arguments-test-expected.txt        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -1,115 +0,0 @@
</span><del>-Tests calling WebGL APIs with wrong argument types
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-PASS Program Compiled
-PASS Shader Compiled
-PASS getUniformLocation succeeded
-PASS context.compileShader(argument) threw exception TypeError: Argument 1 ('shader') to WebGLRenderingContextBase.compileShader must be an instance of WebGLShader.
-PASS context.linkProgram(argument) threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.linkProgram must be an instance of WebGLProgram.
-PASS context.attachShader(program, argument) threw exception TypeError: Argument 2 ('shader') to WebGLRenderingContextBase.attachShader must be an instance of WebGLShader.
-PASS context.attachShader(argument, shader) threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.attachShader must be an instance of WebGLProgram.
-PASS context.detachShader(program, argument) threw exception TypeError: Argument 2 ('shader') to WebGLRenderingContextBase.detachShader must be an instance of WebGLShader.
-PASS context.detachShader(argument, shader) threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.detachShader must be an instance of WebGLProgram.
-PASS context.useProgram(argument) threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.useProgram must be an instance of WebGLProgram.
-PASS context.shaderSource(argument, 'foo') threw exception TypeError: Argument 1 ('shader') to WebGLRenderingContextBase.shaderSource must be an instance of WebGLShader.
-PASS context.bindAttribLocation(argument, 0, 'foo') threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.bindAttribLocation must be an instance of WebGLProgram.
-PASS context.bindBuffer(context.ARRAY_BUFFER, argument) threw exception TypeError: Argument 2 ('buffer') to WebGLRenderingContextBase.bindBuffer must be an instance of WebGLBuffer.
-PASS context.bindFramebuffer(context.FRAMEBUFFER, argument) threw exception TypeError: Argument 2 ('framebuffer') to WebGLRenderingContextBase.bindFramebuffer must be an instance of WebGLFramebuffer.
-PASS context.bindRenderbuffer(context.RENDERBUFFER, argument) threw exception TypeError: Argument 2 ('renderbuffer') to WebGLRenderingContextBase.bindRenderbuffer must be an instance of WebGLRenderbuffer.
-PASS context.bindTexture(context.TEXTURE_2D, argument) threw exception TypeError: Argument 2 ('texture') to WebGLRenderingContextBase.bindTexture must be an instance of WebGLTexture.
-PASS context.framebufferRenderbuffer(context.FRAMEBUFFER, context.DEPTH_ATTACHMENT, context.RENDERBUFFER, argument) threw exception TypeError: Argument 4 ('renderbuffer') to WebGLRenderingContextBase.framebufferRenderbuffer must be an instance of WebGLRenderbuffer.
-PASS context.framebufferTexture2D(context.FRAMEBUFFER, context.COLOR_ATTACHMENT0, context.TEXTURE_2D, argument, 0) threw exception TypeError: Argument 4 ('texture') to WebGLRenderingContextBase.framebufferTexture2D must be an instance of WebGLTexture.
-PASS context.uniform2fv(argument, new Float32Array([0.0, 0.0])) threw exception TypeError: Type error.
-PASS context.uniform2iv(argument, new Int32Array([0, 0])) threw exception TypeError: Type error.
-PASS context.uniformMatrix2fv(argument, false, new Float32Array([0.0, 0.0, 0.0, 0.0])) threw exception TypeError: Type error.
-PASS context.getProgramParameter(argument, 0) threw exception TypeError: Type error.
-PASS context.getShaderParameter(argument, 0) threw exception TypeError: Type error.
-PASS context.getUniform(argument, loc) threw exception TypeError: Type error.
-PASS context.getUniform(program, argument) threw exception TypeError: Type error.
-PASS context.getUniformLocation(argument, 'u_modelViewProjMatrix') threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.getUniformLocation must be an instance of WebGLProgram.
-PASS context.getProgramInfoLog(argument) threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.getProgramInfoLog must be an instance of WebGLProgram.
-PASS context.getShaderInfoLog(argument) threw exception TypeError: Argument 1 ('shader') to WebGLRenderingContextBase.getShaderInfoLog must be an instance of WebGLShader.
-PASS context.getShaderSource(argument) threw exception TypeError: Argument 1 ('shader') to WebGLRenderingContextBase.getShaderSource must be an instance of WebGLShader.
-PASS context.compileShader(argument) threw exception TypeError: Argument 1 ('shader') to WebGLRenderingContextBase.compileShader must be an instance of WebGLShader.
-PASS context.linkProgram(argument) threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.linkProgram must be an instance of WebGLProgram.
-PASS context.attachShader(program, argument) threw exception TypeError: Argument 2 ('shader') to WebGLRenderingContextBase.attachShader must be an instance of WebGLShader.
-PASS context.attachShader(argument, shader) threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.attachShader must be an instance of WebGLProgram.
-PASS context.detachShader(program, argument) threw exception TypeError: Argument 2 ('shader') to WebGLRenderingContextBase.detachShader must be an instance of WebGLShader.
-PASS context.detachShader(argument, shader) threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.detachShader must be an instance of WebGLProgram.
-PASS context.useProgram(argument) threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.useProgram must be an instance of WebGLProgram.
-PASS context.shaderSource(argument, 'foo') threw exception TypeError: Argument 1 ('shader') to WebGLRenderingContextBase.shaderSource must be an instance of WebGLShader.
-PASS context.bindAttribLocation(argument, 0, 'foo') threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.bindAttribLocation must be an instance of WebGLProgram.
-PASS context.bindBuffer(context.ARRAY_BUFFER, argument) threw exception TypeError: Argument 2 ('buffer') to WebGLRenderingContextBase.bindBuffer must be an instance of WebGLBuffer.
-PASS context.bindFramebuffer(context.FRAMEBUFFER, argument) threw exception TypeError: Argument 2 ('framebuffer') to WebGLRenderingContextBase.bindFramebuffer must be an instance of WebGLFramebuffer.
-PASS context.bindRenderbuffer(context.RENDERBUFFER, argument) threw exception TypeError: Argument 2 ('renderbuffer') to WebGLRenderingContextBase.bindRenderbuffer must be an instance of WebGLRenderbuffer.
-PASS context.bindTexture(context.TEXTURE_2D, argument) threw exception TypeError: Argument 2 ('texture') to WebGLRenderingContextBase.bindTexture must be an instance of WebGLTexture.
-PASS context.framebufferRenderbuffer(context.FRAMEBUFFER, context.DEPTH_ATTACHMENT, context.RENDERBUFFER, argument) threw exception TypeError: Argument 4 ('renderbuffer') to WebGLRenderingContextBase.framebufferRenderbuffer must be an instance of WebGLRenderbuffer.
-PASS context.framebufferTexture2D(context.FRAMEBUFFER, context.COLOR_ATTACHMENT0, context.TEXTURE_2D, argument, 0) threw exception TypeError: Argument 4 ('texture') to WebGLRenderingContextBase.framebufferTexture2D must be an instance of WebGLTexture.
-PASS context.uniform2fv(argument, new Float32Array([0.0, 0.0])) threw exception TypeError: Type error.
-PASS context.uniform2iv(argument, new Int32Array([0, 0])) threw exception TypeError: Type error.
-PASS context.uniformMatrix2fv(argument, false, new Float32Array([0.0, 0.0, 0.0, 0.0])) threw exception TypeError: Type error.
-PASS context.getProgramParameter(argument, 0) threw exception TypeError: Type error.
-PASS context.getShaderParameter(argument, 0) threw exception TypeError: Type error.
-PASS context.getUniform(argument, loc) threw exception TypeError: Type error.
-PASS context.getUniform(program, argument) threw exception TypeError: Type error.
-PASS context.getUniformLocation(argument, 'u_modelViewProjMatrix') threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.getUniformLocation must be an instance of WebGLProgram.
-PASS context.getProgramInfoLog(argument) threw exception TypeError: Argument 1 ('program') to WebGLRenderingContextBase.getProgramInfoLog must be an instance of WebGLProgram.
-PASS context.getShaderInfoLog(argument) threw exception TypeError: Argument 1 ('shader') to WebGLRenderingContextBase.getShaderInfoLog must be an instance of WebGLShader.
-PASS context.getShaderSource(argument) threw exception TypeError: Argument 1 ('shader') to WebGLRenderingContextBase.getShaderSource must be an instance of WebGLShader.
-PASS context.compileShader(argument) is undefined.
-PASS context.linkProgram(argument) is undefined.
-PASS context.attachShader(program, argument) is undefined.
-PASS context.attachShader(argument, shader) is undefined.
-PASS context.detachShader(program, argument) is undefined.
-PASS context.detachShader(argument, shader) is undefined.
-PASS context.useProgram(argument) is undefined.
-PASS context.shaderSource(argument, 'foo') is undefined.
-PASS context.bindAttribLocation(argument, 0, 'foo') is undefined.
-PASS context.bindBuffer(context.ARRAY_BUFFER, argument) is undefined.
-PASS context.bindFramebuffer(context.FRAMEBUFFER, argument) is undefined.
-PASS context.bindRenderbuffer(context.RENDERBUFFER, argument) is undefined.
-PASS context.bindTexture(context.TEXTURE_2D, argument) is undefined.
-PASS context.framebufferRenderbuffer(context.FRAMEBUFFER, context.DEPTH_ATTACHMENT, context.RENDERBUFFER, argument) is undefined.
-PASS context.framebufferTexture2D(context.FRAMEBUFFER, context.COLOR_ATTACHMENT0, context.TEXTURE_2D, argument, 0) is undefined.
-PASS context.uniform2fv(argument, new Float32Array([0.0, 0.0])) is undefined.
-PASS context.uniform2iv(argument, new Int32Array([0, 0])) is undefined.
-PASS context.uniformMatrix2fv(argument, false, new Float32Array([0.0, 0.0, 0.0, 0.0])) is undefined.
-PASS context.getProgramParameter(argument, 0) is null
-PASS context.getShaderParameter(argument, 0) is null
-PASS context.getUniform(argument, loc) is null
-PASS context.getUniform(program, argument) is null
-PASS context.getUniformLocation(argument, 'u_modelViewProjMatrix') is null
-PASS context.getProgramInfoLog(argument) is ''
-PASS context.getShaderInfoLog(argument) is ''
-PASS context.getShaderSource(argument) is ''
-PASS context.compileShader(argument) is undefined.
-PASS context.linkProgram(argument) is undefined.
-PASS context.attachShader(program, argument) is undefined.
-PASS context.attachShader(argument, shader) is undefined.
-PASS context.detachShader(program, argument) is undefined.
-PASS context.detachShader(argument, shader) is undefined.
-PASS context.useProgram(argument) is undefined.
-PASS context.shaderSource(argument, 'foo') is undefined.
-PASS context.bindAttribLocation(argument, 0, 'foo') is undefined.
-PASS context.bindBuffer(context.ARRAY_BUFFER, argument) is undefined.
-PASS context.bindFramebuffer(context.FRAMEBUFFER, argument) is undefined.
-PASS context.bindRenderbuffer(context.RENDERBUFFER, argument) is undefined.
-PASS context.bindTexture(context.TEXTURE_2D, argument) is undefined.
-PASS context.framebufferRenderbuffer(context.FRAMEBUFFER, context.DEPTH_ATTACHMENT, context.RENDERBUFFER, argument) is undefined.
-PASS context.framebufferTexture2D(context.FRAMEBUFFER, context.COLOR_ATTACHMENT0, context.TEXTURE_2D, argument, 0) is undefined.
-PASS context.uniform2fv(argument, new Float32Array([0.0, 0.0])) is undefined.
-PASS context.uniform2iv(argument, new Int32Array([0, 0])) is undefined.
-PASS context.uniformMatrix2fv(argument, false, new Float32Array([0.0, 0.0, 0.0, 0.0])) is undefined.
-PASS context.getProgramParameter(argument, 0) is null
-PASS context.getShaderParameter(argument, 0) is null
-PASS context.getUniform(argument, loc) is null
-PASS context.getUniform(program, argument) is null
-PASS context.getUniformLocation(argument, 'u_modelViewProjMatrix') is null
-PASS context.getProgramInfoLog(argument) is ''
-PASS context.getShaderInfoLog(argument) is ''
-PASS context.getShaderSource(argument) is ''
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsfastcanvaswebglbadargumentstesthtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/canvas/webgl/bad-arguments-test.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/canvas/webgl/bad-arguments-test.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/fast/canvas/webgl/bad-arguments-test.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -1,89 +0,0 @@
</span><del>-&lt;html&gt;
-&lt;head&gt;
-&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;resources/webgl-test.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;resources/webgl-test-utils.js&quot;&gt;&lt;/script&gt;
-&lt;/head&gt;
-&lt;body&gt;
-&lt;div id=&quot;description&quot;&gt;&lt;/div&gt;
-&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
-
-&lt;script&gt;
-if (window.internals)
-    window.internals.settings.setWebGLErrorsToConsoleEnabled(false);
-
-var wtu = WebGLTestUtils;
-description(&quot;Tests calling WebGL APIs with wrong argument types&quot;);
-
-var context = wtu.create3DContext();
-var program = wtu.loadStandardProgram(context);
-var shader = wtu.loadStandardVertexShader(context);
-var shouldGenerateGLError = wtu.shouldGenerateGLError;
-
-assertMsg(program != null, &quot;Program Compiled&quot;);
-assertMsg(shader != null, &quot;Shader Compiled&quot;);
-
-var loc = context.getUniformLocation(program, &quot;u_modelViewProjMatrix&quot;);
-assertMsg(loc != null, &quot;getUniformLocation succeeded&quot;);
-
-var arguments = [
-  { value: &quot;foo&quot;,
-    throw: true },
-  { value: 0,
-    throw: true },
-  { value: null,
-    throw: false },
-  { value: undefined,
-    throw: false }
-];
-
-var argument;
-
-function shouldBeEmptyString(command) {
-  shouldBe(command, &quot;''&quot;);
-}
-
-for (var i = 0; i &lt; arguments.length; ++i) {
-  var func, func2, func3;
-  if (arguments[i].throw) {
-    func = shouldThrow;
-    func2 = shouldThrow;
-    func3 = shouldThrow;
-  } else {
-    func = shouldBeUndefined;
-    func2 = shouldBeNull;
-    func3 = shouldBeEmptyString;
-  }
-  argument = arguments[i].value;
-  func(&quot;context.compileShader(argument)&quot;);
-  func(&quot;context.linkProgram(argument)&quot;);
-  func(&quot;context.attachShader(program, argument)&quot;);
-  func(&quot;context.attachShader(argument, shader)&quot;);
-  func(&quot;context.detachShader(program, argument)&quot;);
-  func(&quot;context.detachShader(argument, shader)&quot;);
-  func(&quot;context.useProgram(argument)&quot;);
-  func(&quot;context.shaderSource(argument, 'foo')&quot;);
-  func(&quot;context.bindAttribLocation(argument, 0, 'foo')&quot;);
-  func(&quot;context.bindBuffer(context.ARRAY_BUFFER, argument)&quot;);
-  func(&quot;context.bindFramebuffer(context.FRAMEBUFFER, argument)&quot;);
-  func(&quot;context.bindRenderbuffer(context.RENDERBUFFER, argument)&quot;);
-  func(&quot;context.bindTexture(context.TEXTURE_2D, argument)&quot;);
-  func(&quot;context.framebufferRenderbuffer(context.FRAMEBUFFER, context.DEPTH_ATTACHMENT, context.RENDERBUFFER, argument)&quot;);
-  func(&quot;context.framebufferTexture2D(context.FRAMEBUFFER, context.COLOR_ATTACHMENT0, context.TEXTURE_2D, argument, 0)&quot;);
-  func(&quot;context.uniform2fv(argument, new Float32Array([0.0, 0.0]))&quot;);
-  func(&quot;context.uniform2iv(argument, new Int32Array([0, 0]))&quot;);
-  func(&quot;context.uniformMatrix2fv(argument, false, new Float32Array([0.0, 0.0, 0.0, 0.0]))&quot;);
-
-  func2(&quot;context.getProgramParameter(argument, 0)&quot;);
-  func2(&quot;context.getShaderParameter(argument, 0)&quot;);
-  func2(&quot;context.getUniform(argument, loc)&quot;);
-  func2(&quot;context.getUniform(program, argument)&quot;);
-  func2(&quot;context.getUniformLocation(argument, 'u_modelViewProjMatrix')&quot;);
-
-  func3(&quot;context.getProgramInfoLog(argument)&quot;);
-  func3(&quot;context.getShaderInfoLog(argument)&quot;);
-  func3(&quot;context.getShaderSource(argument)&quot;);
-}
-&lt;/script&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesREADMEmd"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/README.md (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/README.md        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/README.md        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx">                  Example: webgl-conformance-tests.html?version=1.3.2
</span><span class="cx"> 
</span><span class="cx">     minVersion:  Set to the minimum version of each test to include. Only tests
</span><del>-                 at this version or above will be inlcuded.
</del><ins>+                 at this version or above will be included.
</ins><span class="cx"> 
</span><span class="cx">                  Example: webgl-conformance-tests.html?minVersion=1.3.2
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceattribsgldisabledvertexattribhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/attribs/gl-disabled-vertex-attrib.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/attribs/gl-disabled-vertex-attrib.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/attribs/gl-disabled-vertex-attrib.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -44,20 +44,20 @@
</span><span class="cx"> attribute vec4 a_position;
</span><span class="cx"> attribute vec4 a_color;
</span><span class="cx"> varying vec4 v_color;
</span><ins>+bool isCorrectColor(vec4 v) {
+  return v.x == 0.0 &amp;&amp; v.y == 0.0 &amp;&amp; v.z == 0.0 &amp;&amp; v.w == 1.0;
+}
</ins><span class="cx"> void main() {
</span><span class="cx">   gl_Position = a_position;
</span><del>-  v_color = a_color;
</del><ins>+  v_color = isCorrectColor(a_color) ? vec4(0, 1, 0, 1) : vec4(1, 0, 0, 1);
</ins><span class="cx"> }
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx"> &lt;script id=&quot;fshader&quot; type=&quot;x-shader/x-fragment&quot;&gt;
</span><span class="cx"> precision mediump float;
</span><span class="cx"> varying vec4 v_color;
</span><del>-bool isCorrectColor(vec4 v) {
-  return v.x == 0.0 &amp;&amp; v.y == 0.0 &amp;&amp; v.z == 0.0 &amp;&amp; v.w == 1.0;
-}
</del><span class="cx"> void main() {
</span><del>-  gl_FragColor = isCorrectColor(v_color) ? vec4(0, 1, 0, 1) : vec4(1, 0, 0, 1);
</del><ins>+  gl_FragColor = v_color;
</ins><span class="cx"> }
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformancecontextcontextcreationanddestructionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/context/context-creation-and-destruction.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/context/context-creation-and-destruction.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/context/context-creation-and-destruction.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -32,49 +32,21 @@
</span><span class="cx"> &lt;title&gt;Test that contexts are freed and garbage collected reasonably&lt;/title&gt;
</span><span class="cx"> &lt;link rel=&quot;stylesheet&quot; href=&quot;../../resources/js-test-style.css&quot;/&gt;
</span><span class="cx"> &lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../resources/webgl-test.js&quot;&gt; &lt;/script&gt;
</del><span class="cx"> &lt;script src=&quot;../resources/webgl-test-utils.js&quot;&gt; &lt;/script&gt;
</span><ins>+&lt;script src=&quot;../resources/iterable-test.js&quot;&gt; &lt;/script&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;div id=&quot;description&quot;&gt;&lt;/div&gt;
</span><span class="cx"> &lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> &quot;use strict&quot;;
</span><del>-var wtu = WebGLTestUtils;
-var target = 500;
-var count = 0;
-
</del><span class="cx"> description();
</span><del>-doNextTest();
</del><span class="cx"> 
</span><del>-// Creates a canvas and a texture then exits. There are
-// no references to either so both should be garbage collected.
-function test() {
-  var canvas = document.createElement(&quot;canvas&quot;);
-  // This is safe for any device. See drawingBufferWidth in spec.
-  canvas.width = 2048;
-  canvas.height = 2048;
-  var gl = wtu.create3DContext(canvas);
-  var maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);
-  var size = Math.min(1024, maxTextureSize);
-  var tex = gl.createTexture();
-  gl.bindTexture(gl.TEXTURE_2D, tex);
-  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, size, size, 0, gl.RGBA, gl.UNSIGNED_BYTE,
-                new Uint8Array(size * size * 4));
-  gl.clear(gl.COLOR_BUFFER_BIT);
-  glErrorShouldBe(gl, gl.NO_ERROR, &quot;Should be no errors&quot;);
-}
</del><ins>+var wtu = WebGLTestUtils;
</ins><span class="cx"> 
</span><del>-function doNextTest() {
-  ++count;
-  debug(&quot;test &quot; + count + &quot; of &quot; + target);
-  test();
-  if (count &lt; target) {
-    setTimeout(doNextTest, 100);
-  } else {
-    finishTest();
-  }
-}
</del><ins>+var test = IterableTest.createContextCreationAndDestructionTest();
+var iterations = parseInt(wtu.getUrlOptions().iterations, 10) || 50;
+IterableTest.run(test, iterations);
</ins><span class="cx"> 
</span><span class="cx"> var successfullyParsed = true;
</span><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceextensionswebglcompressedtextures3tchtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-compressed-texture-s3tc.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-compressed-texture-s3tc.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-compressed-texture-s3tc.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -609,7 +609,7 @@
</span><span class="cx">                 if (actual[actualOffset + jj] != expected[jj]) {
</span><span class="cx">                     failed = true;
</span><span class="cx">                     var was = actual[actualOffset + 0].toString();
</span><del>-                    for (j = 1; j &lt; 4; ++j) {
</del><ins>+                    for (var j = 1; j &lt; 4; ++j) {
</ins><span class="cx">                         was += &quot;,&quot; + actual[actualOffset + j];
</span><span class="cx">                     }
</span><span class="cx">                     testFailed('at (' + xx + ', ' + yy +
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceextensionswebgldebugshadershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-debug-shaders.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-debug-shaders.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-debug-shaders.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -55,6 +55,7 @@
</span><span class="cx"> var program = null;
</span><span class="cx"> var info = null;
</span><span class="cx"> var translatedSource;
</span><ins>+var newTranslatedSource;
</ins><span class="cx"> 
</span><span class="cx"> if (!gl) {
</span><span class="cx">     testFailed(&quot;WebGL context does not exist&quot;);
</span><span class="lines">@@ -117,9 +118,9 @@
</span><span class="cx"> 
</span><span class="cx">             // if no source has been defined or compileShader() has not been called,
</span><span class="cx">             // getTranslatedShaderSource() should return an empty string.
</span><del>-            shouldBeNull(&quot;ext.getTranslatedShaderSource(shader)&quot;);
</del><ins>+            shouldBe(&quot;ext.getTranslatedShaderSource(shader)&quot;, '&quot;&quot;');
</ins><span class="cx">             gl.shaderSource(shader, info.source);
</span><del>-            shouldBeNull(&quot;ext.getTranslatedShaderSource(shader)&quot;);
</del><ins>+            shouldBe(&quot;ext.getTranslatedShaderSource(shader)&quot;, '&quot;&quot;');
</ins><span class="cx">             gl.compileShader(shader);
</span><span class="cx">             shouldBeTrue(&quot;gl.getShaderParameter(shader, gl.COMPILE_STATUS)&quot;);
</span><span class="cx">             translatedSource = ext.getTranslatedShaderSource(shader);
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceextensionswebgldepthtexturehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-depth-texture.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-depth-texture.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/extensions/webgl-depth-texture.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -273,9 +273,8 @@
</span><span class="cx"> 
</span><span class="cx">         dumpIt(gl, res, &quot;--depth--&quot;);
</span><span class="cx"> 
</span><del>-        // Check that each pixel's RGB are the same and that it's value is less
-        // than the previous pixel in either direction. Basically verify we have a
-        // gradient.
</del><ins>+        // Check that each pixel's R value is less than that of the previous pixel
+        // in either direction. Basically verify we have a gradient.
</ins><span class="cx">         var success = true;
</span><span class="cx">         for (var yy = 0; yy &lt; res; ++yy) {
</span><span class="cx">           for (var xx = 0; xx &lt; res; ++xx) {
</span><span class="lines">@@ -283,20 +282,6 @@
</span><span class="cx">             var left = actual - 4;
</span><span class="cx">             var down = actual - res * 4;
</span><span class="cx"> 
</span><del>-            if (actualPixels[actual + 0] != actualPixels[actual + 1]) {
-                testFailed('R != G');
-                success = false;
-            }
-            if (actualPixels[actual + 0] != actualPixels[actual + 2]) {
-                testFailed('R != B');
-                success = false;
-            }
-            // ALPHA is implementation dependent
-            if (actualPixels[actual + 3] != 0xFF &amp;&amp; actualPixels[actual + 3] != actualPixels[actual + 0]) {
-                testFailed('A != 255 &amp;&amp; A != R');
-                success = false;
-            }
-
</del><span class="cx">             if (xx &gt; 0) {
</span><span class="cx">               if (actualPixels[actual] &lt;= actualPixels[left]) {
</span><span class="cx">                   testFailed(&quot;actual(&quot; + actualPixels[actual] + &quot;) &lt; left(&quot; + actualPixels[left] + &quot;)&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceglslmiscshaderwitharrayofstructscontainingarrayshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/glsl/misc/shader-with-array-of-structs-containing-arrays.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/glsl/misc/shader-with-array-of-structs-containing-arrays.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/glsl/misc/shader-with-array-of-structs-containing-arrays.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -109,8 +109,6 @@
</span><span class="cx"> 
</span><span class="cx"> var program = wtu.setupProgram(gl, [&quot;vshader&quot;, &quot;fshader-with-one-element-arrays&quot;], [&quot;a_position&quot;]);
</span><span class="cx"> var green_loc = gl.getUniformLocation(program, &quot;u_colors[0].color[0]&quot;);
</span><del>-var zeroth_color = gl.getUniformLocation(program, &quot;u_colors[0].color&quot;);
-shouldBeTrue(&quot;zeroth_color != undefined&quot;);
</del><span class="cx"> gl.uniform4fv(green_loc, [0, 1, 0, 1]);
</span><span class="cx"> wtu.clearAndDrawUnitQuad(gl);
</span><span class="cx"> wtu.checkCanvas(gl, [0, 255, 0, 255], &quot;Should be green&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformancemiscbadargumentstesthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/misc/bad-arguments-test.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/misc/bad-arguments-test.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/misc/bad-arguments-test.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -72,15 +72,13 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> for (var i = 0; i &lt; testArguments.length; ++i) {
</span><del>-  var func, func2, func3;
</del><ins>+  var func, func2;
</ins><span class="cx">   if (testArguments[i].throws) {
</span><span class="cx">     func = shouldThrow;
</span><span class="cx">     func2 = shouldThrow;
</span><del>-    func3 = shouldThrow;
</del><span class="cx">   } else {
</span><span class="cx">     func = shouldBeUndefined;
</span><span class="cx">     func2 = shouldBeNull;
</span><del>-    func3 = shouldBeEmptyString;
</del><span class="cx">   }
</span><span class="cx">   argument = testArguments[i].value;
</span><span class="cx">   func(&quot;context.compileShader(argument)&quot;);
</span><span class="lines">@@ -102,15 +100,15 @@
</span><span class="cx">   func(&quot;context.uniform2iv(argument, new Int32Array([0, 0]))&quot;);
</span><span class="cx">   func(&quot;context.uniformMatrix2fv(argument, false, new Float32Array([0.0, 0.0, 0.0, 0.0]))&quot;);
</span><span class="cx"> 
</span><ins>+  func2(&quot;context.getProgramInfoLog(argument)&quot;);
</ins><span class="cx">   func2(&quot;context.getProgramParameter(argument, 0)&quot;);
</span><ins>+  func2(&quot;context.getShaderInfoLog(argument)&quot;);
</ins><span class="cx">   func2(&quot;context.getShaderParameter(argument, 0)&quot;);
</span><ins>+  func2(&quot;context.getShaderSource(argument)&quot;);
</ins><span class="cx">   func2(&quot;context.getUniform(argument, loc)&quot;);
</span><span class="cx">   func2(&quot;context.getUniform(program, argument)&quot;);
</span><span class="cx">   func2(&quot;context.getUniformLocation(argument, 'u_modelViewProjMatrix')&quot;);
</span><span class="cx"> 
</span><del>-  func3(&quot;context.getProgramInfoLog(argument)&quot;);
-  func3(&quot;context.getShaderInfoLog(argument)&quot;);
-  func3(&quot;context.getShaderSource(argument)&quot;);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> var successfullyParsed = true;
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformancemiscwebglspecifichtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/misc/webgl-specific.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/misc/webgl-specific.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/misc/webgl-specific.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -96,6 +96,12 @@
</span><span class="cx"> shouldGenerateGLError(gl, gl.NO_ERROR, &quot;gl.stencilFuncSeparate(gl.FRONT, gl.ALWAYS, 1, 1)&quot;);
</span><span class="cx"> shouldGenerateGLError(gl, gl.NO_ERROR, &quot;gl.drawArrays(gl.TRIANGLES, 0, 0)&quot;);
</span><span class="cx"> 
</span><ins>+// Added in 1.0.3 version of spec.
+// debug(&quot;&quot;);
+// debug(&quot;Verify that IMPLEMENTATION_COLOR_READ_FORMAT and IMPLEMENTATION_COLOR_READ_TYPE are undefined&quot;);
+// shouldBeUndefined(gl.IMPLEMENTATION_COLOR_READ_FORMAT);
+// shouldBeUndefined(gl.IMPLEMENTATION_COLOR_READ_TYPE);
+
</ins><span class="cx"> debug(&quot;&quot;);
</span><span class="cx"> debug(&quot;Verify that *LENGTH are undefined&quot;);
</span><span class="cx"> shouldBeUndefined(gl.INFO_LOG_LENGTH);
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformancemorefunctionsuniformMatrixBadArgshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/functions/uniformMatrixBadArgs.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/functions/uniformMatrixBadArgs.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/functions/uniformMatrixBadArgs.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx">   });
</span><span class="cx">   var d = new Uint8Array(4);
</span><span class="cx">   gl.readPixels(0,0,1,1,gl.RGBA, gl.UNSIGNED_BYTE, d);
</span><del>-  assertArrayEquals([1,2,3,8], d);
</del><ins>+  assertArrayEqualsWithEpsilon([1,2,3,8], d, [1,1,1,1]);
</ins><span class="cx">   sh.destroy();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformancemoreunitjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/unit.js (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/unit.js        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/unit.js        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -390,6 +390,38 @@
</span><span class="cx">   return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+function assertArrayEqualsWithEpsilon(name, v, p, l) {
+if (l == null) { l = p; p = v; v = name; name = null; }
+if (!v) {
+testFailed(&quot;assertArrayEqualsWithEpsilon: first array undefined&quot;, name, v, p);
+return false;
+}
+if (!p) {
+testFailed(&quot;assertArrayEqualsWithEpsilon: second array undefined&quot;, name, v, p);
+return false;
+}
+if (!l) {
+testFailed(&quot;assertArrayEqualsWithEpsilon: limit array undefined&quot;, name, v, p);
+return false;
+}
+if (v.length != p.length) {
+testFailed(&quot;assertArrayEqualsWithEpsilon&quot;, name, v, p, l);
+return false;
+}
+if (v.length != l.length) {
+testFailed(&quot;assertArrayEqualsWithEpsilon&quot;, name, v, p, l);
+return false;
+}
+for (var ii = 0; ii &lt; v.length; ++ii) {
+if (Math.abs(v[ii]- p[ii])&gt;l[ii]) {
+testFailed(&quot;assertArrayEqualsWithEpsilon&quot;, name, v, p, l);
+return false;
+}
+}
+testPassed(&quot;assertArrayEqualsWithEpsilon&quot;, name, v, p, l);
+return true;
+}
+
</ins><span class="cx"> function assertNotEquals(name, v, p) {
</span><span class="cx">   if (p == null) { p = v; v = name; name = null; }
</span><span class="cx">   if (compare(v, p)) {
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformancemoreutiljs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/util.js (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/util.js        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/more/util.js        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -841,7 +841,7 @@
</span><span class="cx">     if (!this.initialized) this.init();
</span><span class="cx">     var gl = this.gl;
</span><span class="cx">     for (var i=0; i&lt;arguments.length; i++) {
</span><del>-      if (arguments[i] == null) continue;
</del><ins>+          if (arguments[i] == null || arguments[i] == -1) continue;
</ins><span class="cx">       gl.bindBuffer(gl.ARRAY_BUFFER, this.vbos[i]);
</span><span class="cx">       gl.vertexAttribPointer(arguments[i], this.data[i].size, gl.FLOAT, false, 0, 0);
</span><span class="cx">       gl.enableVertexAttribArray(arguments[i]);
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformancerenderingmultisamplecorruptionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/rendering/multisample-corruption.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/rendering/multisample-corruption.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/rendering/multisample-corruption.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -32,93 +32,26 @@
</span><span class="cx">     &lt;title&gt;WebGL Multisample Renderbuffer Corruption Test&lt;/title&gt;
</span><span class="cx">     &lt;link rel=&quot;stylesheet&quot; href=&quot;../../resources/js-test-style.css&quot;/&gt;
</span><span class="cx">     &lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</span><del>-    &lt;script src=&quot;../resources/webgl-test.js&quot;&gt; &lt;/script&gt;
</del><span class="cx">     &lt;script src=&quot;../resources/webgl-test-utils.js&quot;&gt; &lt;/script&gt;
</span><ins>+    &lt;script src=&quot;../resources/iterable-test.js&quot;&gt; &lt;/script&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;canvas id=&quot;example&quot; width=&quot;2048&quot; height=&quot;2048&quot; style=&quot;width: 128px; height: 128px;&quot;&gt;&lt;/canvas&gt;
</span><span class="cx"> &lt;div id=&quot;description&quot;&gt;&lt;/div&gt;
</span><span class="cx"> &lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
</span><del>-    &lt;script id=&quot;vshader&quot; type=&quot;x-shader/x-vertex&quot;&gt;
-        attribute vec4 vPosition;
-        void main()
-        {
-            gl_Position = vPosition;
-        }
-    &lt;/script&gt;
-
-    &lt;script id=&quot;fshader&quot; type=&quot;x-shader/x-fragment&quot;&gt;
-        void main()
-        {
-            gl_FragColor = vec4(0.0,0.0,0.0,0.0);
-        }
-    &lt;/script&gt;
-
</del><span class="cx">     &lt;script&gt;
</span><span class="cx">         &quot;use strict&quot;;
</span><del>-        function init()
-        {
-            description(document.title);
</del><span class="cx"> 
</span><del>-            var lastContext = null;
-            var cycleCount = 0;
-            var maxCycles = 100;
-            var failed = false;
-            var wtu = WebGLTestUtils;
-            var gl = wtu.create3DContext(&quot;example&quot;, {antialias: true, preserveDrawingBuffer: true});
</del><ins>+        description(document.title);
</ins><span class="cx"> 
</span><del>-            gl.clearColor(1.0, 0.0, 0.0, 1.0);
-            gl.clear(gl.COLOR_BUFFER_BIT);
</del><ins>+        var wtu = WebGLTestUtils;
</ins><span class="cx"> 
</span><del>-            var program = wtu.setupProgram(gl, [&quot;vshader&quot;, &quot;fshader&quot;], [&quot;vPosition&quot;]);
-            var vertexObject = gl.createBuffer();
-            gl.bindBuffer(gl.ARRAY_BUFFER, vertexObject);
-            gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ 0,2.5,0, 1.5,1.5,0, 2.5,1.5,0 ]), gl.STATIC_DRAW);
-            gl.enableVertexAttribArray(0);
-            gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);
</del><ins>+        var gl = wtu.create3DContext(&quot;example&quot;, {antialias: true, preserveDrawingBuffer: true});
+        var test = IterableTest.createMultisampleCorruptionTest(gl);
+        var iterations = parseInt(wtu.getUrlOptions().iterations, 10) || 25;
+        IterableTest.run(test, iterations);
</ins><span class="cx"> 
</span><del>-            function cycleAndTest() {
-                var gl2 = wtu.create3DContext(null, {antialias: true});
-
-                gl2.canvas.width = gl2.canvas.height = 1024;
-                gl2.canvas.style.width = gl2.canvas.style.height = &quot;1px&quot;;
-                document.body.appendChild(gl2.canvas);
-
-                gl2.clearColor(1.0, 0.0, 0.0, 1.0);
-                gl2.clear(gl2.COLOR_BUFFER_BIT);
-
-                if(lastContext) {
-                    gl.drawArrays(gl.TRIANGLES, 0, 3);
-                    var msg = &quot;Should be red after loop &quot; + cycleCount;
-                    wtu.checkCanvasRectColor(gl,
-                        0, 0, gl.canvas.width, gl.canvas.height,
-                        [255, 0, 0, 255], null,
-                        function() {
-                            testPassed(msg);
-                        },
-                        function() {
-                            testFailed(msg);
-                            failed = true;
-                        },
-                    debug);
-                    document.body.removeChild(lastContext.canvas);
-                }
-
-                lastContext = gl2;
-                cycleCount++;
-
-                if(cycleCount &lt;= maxCycles &amp;&amp; !failed) {
-                    wtu.waitForComposite(gl2, cycleAndTest);
-                } else {
-                    finishTest();
-                }
-            }
-
-            cycleAndTest();
-       }
-
-       init();
-       var successfullyParsed = true;
</del><ins>+        var successfullyParsed = true;
</ins><span class="cx">     &lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx"> &lt;/body&gt;
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceresourcesfragmentShaderfrag"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/fragmentShader.frag (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/fragmentShader.frag        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/fragmentShader.frag        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>-Copyright (C) 2009 Apple Inc.  All rights reserved.
</del><ins>+Copyright (C) 2009 Apple Computer, Inc.  All rights reserved.
</ins><span class="cx"> 
</span><span class="cx"> Redistribution and use in source and binary forms, with or without
</span><span class="cx"> modification, are permitted provided that the following conditions
</span><span class="lines">@@ -10,10 +10,10 @@
</span><span class="cx">    notice, this list of conditions and the following disclaimer in the
</span><span class="cx">    documentation and/or other materials provided with the distribution.
</span><span class="cx"> 
</span><del>-THIS SOFTWARE IS PROVIDED BY APPLE INC. AS IS AND ANY
</del><ins>+THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. AS IS AND ANY
</ins><span class="cx"> EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
</span><span class="cx"> IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
</span><del>-PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
</del><ins>+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
</ins><span class="cx"> CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
</span><span class="cx"> EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
</span><span class="cx"> PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceresourcesglslgeneratorjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/glsl-generator.js (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/glsl-generator.js        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/glsl-generator.js        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -252,9 +252,9 @@
</span><span class="cx">   var wtu = WebGLTestUtils;
</span><span class="cx">   var gridRes = params.gridRes;
</span><span class="cx">   var vertexTolerance = params.tolerance || 0;
</span><del>-  var fragmentTolerance = vertexTolerance;
</del><ins>+  var fragmentTolerance = params.tolerance || 1;
</ins><span class="cx">   if ('fragmentTolerance' in params)
</span><del>-    fragmentTolerance = params.fragmentTolerance || 0;
</del><ins>+    fragmentTolerance = params.fragmentTolerance;
</ins><span class="cx"> 
</span><span class="cx">   description(&quot;Testing GLSL feature: &quot; + params.feature);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceresourcesvertexShadervert"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/vertexShader.vert (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/vertexShader.vert        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/vertexShader.vert        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>-Copyright (C) 2009 Apple Inc.  All rights reserved.
</del><ins>+Copyright (C) 2009 Apple Computer, Inc.  All rights reserved.
</ins><span class="cx"> 
</span><span class="cx"> Redistribution and use in source and binary forms, with or without
</span><span class="cx"> modification, are permitted provided that the following conditions
</span><span class="lines">@@ -10,10 +10,10 @@
</span><span class="cx">    notice, this list of conditions and the following disclaimer in the
</span><span class="cx">    documentation and/or other materials provided with the distribution.
</span><span class="cx"> 
</span><del>-THIS SOFTWARE IS PROVIDED BY APPLE INC. AS IS AND ANY
</del><ins>+THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. AS IS AND ANY
</ins><span class="cx"> EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
</span><span class="cx"> IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
</span><del>-PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
</del><ins>+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
</ins><span class="cx"> CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
</span><span class="cx"> EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
</span><span class="cx"> PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filesconformanceresourceswebgltestutilsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/webgl-test-utils.js (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/webgl-test-utils.js        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/webgl-test-utils.js        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -28,6 +28,9 @@
</span><span class="cx">  * @param {string} msg The message to log.
</span><span class="cx">  */
</span><span class="cx"> var log = function(msg) {
</span><ins>+  if (window.console &amp;&amp; window.console.log) {
+    window.console.log(msg);
+  }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> /**
</span><span class="lines">@@ -35,6 +38,14 @@
</span><span class="cx">  * @param {string} msg The message to log.
</span><span class="cx">  */
</span><span class="cx"> var error = function(msg) {
</span><ins>+  if (window.console) {
+    if (window.console.error) {
+      window.console.error(msg);
+    }
+    else if (window.console.log) {
+      window.console.log(msg);
+    }
+  }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> /**
</span><span class="lines">@@ -839,15 +850,17 @@
</span><span class="cx">  * @param {!function()} differentFn Function to call if a pixel
</span><span class="cx">  *        is different than color
</span><span class="cx">  * @param {!function()} logFn Function to call for logging.
</span><ins>+ * @param {Uint8Array} opt_readBackBuf typically passed to reuse existing
+ *        buffer while reading back pixels.
</ins><span class="cx">  */
</span><del>-var checkCanvasRectColor = function(gl, x, y, width, height, color, opt_errorRange, sameFn, differentFn, logFn) {
</del><ins>+var checkCanvasRectColor = function(gl, x, y, width, height, color, opt_errorRange, sameFn, differentFn, logFn, opt_readBackBuf) {
</ins><span class="cx">   var errorRange = opt_errorRange || 0;
</span><span class="cx">   if (!errorRange.length) {
</span><span class="cx">     errorRange = [errorRange, errorRange, errorRange, errorRange]
</span><span class="cx">   }
</span><span class="cx">   var buf;
</span><span class="cx">   if (gl instanceof WebGLRenderingContext) {
</span><del>-    buf = new Uint8Array(width * height * 4);
</del><ins>+    buf = opt_readBackBuf ? opt_readBackBuf : new Uint8Array(width * height * 4);
</ins><span class="cx">     gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, buf);
</span><span class="cx">   } else {
</span><span class="cx">     buf = gl.getImageData(x, y, width, height).data;
</span><span class="lines">@@ -969,6 +982,30 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> /**
</span><ins>+ * Returns a map of URL querystring options
+ * @return {Object?} Object containing all the values in the URL querystring
+ */
+var getUrlOptions = function() {
+  var options = {};
+  var s = window.location.href;
+  var q = s.indexOf(&quot;?&quot;);
+  var e = s.indexOf(&quot;#&quot;);
+  if (e &lt; 0) {
+    e = s.length;
+  }
+  var query = s.substring(q + 1, e);
+  var pairs = query.split(&quot;&amp;&quot;);
+  for (var ii = 0; ii &lt; pairs.length; ++ii) {
+    var keyValue = pairs[ii].split(&quot;=&quot;);
+    var key = keyValue[0];
+    var value = decodeURIComponent(keyValue[1]);
+    options[key] = value;
+  }
+
+  return options;
+};
+
+/**
</ins><span class="cx">  * Creates a webgl context.
</span><span class="cx">  * @param {!Canvas|string} opt_canvas The canvas tag to get
</span><span class="cx">  *     context from. If one is not passed in one will be
</span><span class="lines">@@ -1988,6 +2025,7 @@
</span><span class="cx">   getScript: getScript,
</span><span class="cx">   getSupportedExtensionWithKnownPrefixes: getSupportedExtensionWithKnownPrefixes,
</span><span class="cx">   getUrlArguments: getUrlArguments,
</span><ins>+  getUrlOptions: getUrlOptions,
</ins><span class="cx">   getAttribMap: getAttribMap,
</span><span class="cx">   getUniformMap: getUniformMap,
</span><span class="cx">   glEnumToString: glEnumToString,
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_filestestguidelinesmd"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/test-guidelines.md (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/test-guidelines.md        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/test-guidelines.md        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> Contributing WebGL conformance tests Guidelines
</span><span class="cx"> ===============================================
</span><span class="cx"> 
</span><del>-Thank you for contibuting to the WebGL conformance tests.
</del><ins>+Thank you for contributing to the WebGL conformance tests.
</ins><span class="cx"> Please try to follow these guidelines when submitting a test.
</span><span class="cx"> 
</span><span class="cx"> *   If you're new to git [here's a terse set of instructions](http://www.khronos.org/webgl/wiki/Using_Github_To_Contribute &quot;Using Github to Contribute&quot;).
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> *   Please use code similar to the code in existing tests
</span><span class="cx"> 
</span><span class="cx">     Ideally, copy an existing test and modify it for your new test. Try not to duplicate
</span><del>-    code that already exists where approriate. In particular
</del><ins>+    code that already exists where appropriate. In particular
</ins><span class="cx"> 
</span><span class="cx">     *   use the functions in WebGLTestUtils rather than duplicating functionality.
</span><span class="cx"> 
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx">              name in `opt_attribs` is bound to the corresponding location in `opt_locations`.
</span><span class="cx"> 
</span><span class="cx">         *    If you need to wait for a composite call `WebGLTestUtils.waitForComposite`.
</span><del>-             As compositing is a browser specfic thing this provides a central place to
</del><ins>+             As compositing is a browser specific thing this provides a central place to
</ins><span class="cx">              update all tests that rely on compositing to function.
</span><span class="cx"> 
</span><span class="cx">     *   Code/Tag Order
</span><span class="lines">@@ -133,17 +133,17 @@
</span><span class="cx">                 runNextTest();
</span><span class="cx"> 
</span><span class="cx">             Remember the tests need to run without timing out even and slow mobile devices.
</span><del>-            The harness resets the timeout timer everytime a test reports success or failure
</del><ins>+            The harness resets the timeout timer every time a test reports success or failure
</ins><span class="cx">             so as long as some part of your test calls `testPassed` or `testFailed` or one of the
</span><span class="cx">             many wrappers (`shouldXXX`, `glErrorShouldBe`, `WebGLTestUtils.checkCanvasXXX`, etc..)
</span><span class="cx">             every so often the harness will not timeout your test.
</span><span class="cx"> 
</span><del>-        *   The test harness requries the global variable `successfullyParse` to be set to true.
</del><ins>+        *   The test harness requires the global variable `successfullyParse` to be set to true.
</ins><span class="cx">             This usually appears at the end of a file.
</span><span class="cx"> 
</span><span class="cx">                 var successfullyParsed = true;
</span><span class="cx"> 
</span><del>-    *   Do not use browser specfic code.
</del><ins>+    *   Do not use browser specific code.
</ins><span class="cx"> 
</span><span class="cx">         *   Do not check the browser version. Use feature detection.
</span><span class="cx"> 
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx">             other tests can go through the same abstraction and the workaround is isolated
</span><span class="cx">             to one place.
</span><span class="cx"> 
</span><del>-        *   Vendors may place test harness specific code in the testing infrustructure.
</del><ins>+        *   Vendors may place test harness specific code in the testing infrastructure.
</ins><span class="cx"> 
</span><span class="cx">                 resources/js-test-pre.js
</span><span class="cx">                 conformance/more/unit.js
</span><span class="lines">@@ -164,11 +164,11 @@
</span><span class="cx"> 
</span><span class="cx">     *   All JavaScript must start with &quot;use strict&quot;;
</span><span class="cx"> 
</span><del>-*   If adding a new test edit the approriate 00_test_list.txt file
</del><ins>+*   If adding a new test edit the appropriate 00_test_list.txt file
</ins><span class="cx"> 
</span><span class="cx">     Each folder has a 00_test_list.txt file that lists the test in that folder.
</span><span class="cx">     Each new test should be prefixed with the option `--min-version &lt;version&gt;` where
</span><del>-    version is 1 more than the newest official verison. At the time of this writing
</del><ins>+    version is 1 more than the newest official version. At the time of this writing
</ins><span class="cx">     all new tests should be prefixed with `--min-version 1.0.2`
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestswebgl102resourceswebgl_test_fileswebglconformancetestshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/webgl-conformance-tests.html (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/webgl-conformance-tests.html        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/LayoutTests/webgl/1.0.2/resources/webgl_test_files/webgl-conformance-tests.html        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -144,7 +144,8 @@
</span><span class="cx">   var reportType = WebGLTestHarnessModule.TestHarness.reportType;
</span><span class="cx">   var pageCount = 0;
</span><span class="cx">   var folderCount = 0;
</span><del>-  var autoScroll = true;
</del><ins>+  var autoScrollEnabled = true; // Whether the user prefers to auto scroll
+  var autoScroll = true; // Whether auto scroll is actually performed
</ins><span class="cx"> 
</span><span class="cx">   var Page = function(reporter, folder, testIndex, url) {
</span><span class="cx">     this.reporter = reporter;
</span><span class="lines">@@ -297,7 +298,7 @@
</span><span class="cx">     button.type = 'button';
</span><span class="cx">     button.value = 'run';
</span><span class="cx">     button.onclick = function() {
</span><del>-      autoScroll = true;
</del><ins>+      autoScroll = autoScrollEnabled;
</ins><span class="cx">       that.run();
</span><span class="cx">     };
</span><span class="cx">     if (reporter.noWebGL) {
</span><span class="lines">@@ -771,10 +772,16 @@
</span><span class="cx">   var button = document.getElementById(&quot;runTestsButton&quot;);
</span><span class="cx">   button.disabled = true;
</span><span class="cx">   button.onclick = function() {
</span><del>-    autoScroll = true;
</del><ins>+    autoScroll = autoScrollEnabled;
</ins><span class="cx">     reporter.postTestStartToServer();
</span><span class="cx">     testHarness.runTests();
</span><span class="cx">   };
</span><ins>+  var autoScrollCheckbox = document.getElementById(&quot;autoScrollCheckbox&quot;);
+  autoScrollCheckbox.checked = autoScrollEnabled;
+  autoScrollCheckbox.onclick = function() {
+    autoScrollEnabled = autoScrollCheckbox.checked;
+    autoScroll = autoScrollEnabled;
+  };
</ins><span class="cx">   var textbutton = document.getElementById(&quot;showTextSummary&quot;);
</span><span class="cx">   textbutton.onclick = function() {
</span><span class="cx">     log(&quot;click&quot;);
</span><span class="lines">@@ -830,6 +837,9 @@
</span><span class="cx">               &lt;br/&gt;
</span><span class="cx">               &lt;input type=&quot;button&quot; value=&quot;run tests&quot; id=&quot;runTestsButton&quot;/&gt;
</span><span class="cx">               &lt;br/&gt;
</span><ins>+              &lt;input type=&quot;checkbox&quot; id=&quot;autoScrollCheckbox&quot;/&gt;
+              &lt;label for=&quot;autoScrollCheckbox&quot;&gt;auto scroll&lt;/label&gt;
+              &lt;br/&gt;
</ins><span class="cx">               &lt;input type=&quot;button&quot; style=&quot;visibility: hidden;&quot; value=&quot;display text summary&quot; id=&quot;showTextSummary&quot;/&gt;
</span><span class="cx">               &lt;div id=&quot;nowebgl&quot; class=&quot;nowebgl&quot; style=&quot;display: none;&quot;&gt;
</span><span class="cx">                 This browser does not appear to support WebGL
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/Source/WebCore/ChangeLog        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2015-02-09  Roger Fong  &lt;roger_fong@apple.com&gt;
+
+        WebGL: Update 1.0.2 conformance layout tests and address new failure.
+        https://bugs.webkit.org/show_bug.cgi?id=141408.
+        &lt;rdar://problem/19773236&gt;
+
+        Reviewed by Dean Jackson.
+
+        Tests covered by updated 1.0.2 conformance tests.
+
+        * html/canvas/WebGLRenderingContextBase.cpp: 
+        Return null string instead of empty string if parameter validation fails.
+        (WebCore::WebGLRenderingContextBase::getProgramInfoLog):
+        (WebCore::WebGLRenderingContextBase::getShaderInfoLog):
+        (WebCore::WebGLRenderingContextBase::getShaderSource):
+
</ins><span class="cx"> 2015-02-09  Timothy Horton  &lt;timothy_horton@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Avoid using a HashMap for DisplayRefreshMonitorManager, which rarely has more than one item
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGLRenderingContextBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp (179858 => 179859)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp        2015-02-10 00:43:57 UTC (rev 179858)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp        2015-02-10 01:02:28 UTC (rev 179859)
</span><span class="lines">@@ -2617,10 +2617,8 @@
</span><span class="cx"> String WebGLRenderingContextBase::getProgramInfoLog(WebGLProgram* program, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(ec);
</span><del>-    if (isContextLostOrPending())
</del><ins>+    if (isContextLostOrPending() || !validateWebGLObject(&quot;getProgramInfoLog&quot;, program))
</ins><span class="cx">         return String();
</span><del>-    if (!validateWebGLObject(&quot;getProgramInfoLog&quot;, program))
-        return &quot;&quot;;
</del><span class="cx">     return ensureNotNull(m_context-&gt;getProgramInfoLog(objectOrZero(program)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2714,10 +2712,8 @@
</span><span class="cx"> String WebGLRenderingContextBase::getShaderInfoLog(WebGLShader* shader, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(ec);
</span><del>-    if (isContextLostOrPending())
</del><ins>+    if (isContextLostOrPending() || !validateWebGLObject(&quot;getShaderInfoLog&quot;, shader))
</ins><span class="cx">         return String();
</span><del>-    if (!validateWebGLObject(&quot;getShaderInfoLog&quot;, shader))
-        return &quot;&quot;;
</del><span class="cx">     return ensureNotNull(m_context-&gt;getShaderInfoLog(objectOrZero(shader)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2756,10 +2752,8 @@
</span><span class="cx"> String WebGLRenderingContextBase::getShaderSource(WebGLShader* shader, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(ec);
</span><del>-    if (isContextLostOrPending())
</del><ins>+    if (isContextLostOrPending() || !validateWebGLObject(&quot;getShaderSource&quot;, shader))
</ins><span class="cx">         return String();
</span><del>-    if (!validateWebGLObject(&quot;getShaderSource&quot;, shader))
-        return &quot;&quot;;
</del><span class="cx">     return ensureNotNull(shader-&gt;getSource());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>