[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

kbr at google.com kbr at google.com
Wed Dec 22 15:55:39 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit b6fd06ad0253ff696f0180f9a4e536404e20abd0
Author: kbr at google.com <kbr at google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Nov 16 19:19:17 2010 +0000

    2010-11-16  Kenneth Russell  <kbr at google.com>
    
            Reviewed by Dimitri Glazkov.
    
            WebIDL conversions from string to number and array to number should not generate TypeError
            https://bugs.webkit.org/show_bug.cgi?id=49218
    
            Recent SVG-related changes to the StrictTypeChecking extended attribute in
            CodeGeneratorJS.pm and CodeGeneratorV8.pm were not correct according to the Web IDL and
            ECMA-262 specifications. In particular, when an attribute or function argument is specified
            as a number type (floating-point or integer), passing in a String or object is not supposed
            to raise an exception.
    
            The original intent of the StrictTypeChecking extended attribute was to properly raise
            TypeError when an interface type is required, but the supplied object does not implement the
            interface type (http://dev.w3.org/2006/webapi/WebIDL/#es-interface). Historically WebKit has
            silently passed null to the C++ bindings in this case. The handling of strings in the
            original StrictTypeChecking implementation was also incorrect, raising exceptions when it
            should not.
    
            The semantics of StrictTypeChecking have been changed to enforce only the restrictions on
            interface types. The V8 custom bindings for WebGL have been updated to match the behavior of
            the autogenerated code.
    
            Test: fast/canvas/webgl/type-conversion-test.html
    
            * bindings/scripts/CodeGeneratorJS.pm:
            * bindings/scripts/CodeGeneratorV8.pm:
            * bindings/v8/custom/V8WebGLRenderingContextCustom.cpp:
            (WebCore::getObjectParameter):
            (WebCore::V8WebGLRenderingContext::getFramebufferAttachmentParameterCallback):
            (WebCore::V8WebGLRenderingContext::getParameterCallback):
            (WebCore::V8WebGLRenderingContext::getProgramParameterCallback):
            (WebCore::V8WebGLRenderingContext::getShaderParameterCallback):
            (WebCore::vertexAttribAndUniformHelperf):
    2010-11-16  Kenneth Russell  <kbr at google.com>
    
            Reviewed by Dimitri Glazkov.
    
            WebIDL conversions from string to number and array to number should not generate TypeError
            https://bugs.webkit.org/show_bug.cgi?id=49218
    
            Updated SVG tests which were incorrectly expecting exceptions to be raised when the Web IDL
            and ECMA-262 specifications state that none should be. Incorporated WebGL test from Khronos
            repository verifying the passing objects of various types to APIs.
    
            Ran all layout tests in Safari on Mac OS X.
    
            * fast/canvas/webgl/type-conversion-test-expected.txt: Added.
            * fast/canvas/webgl/type-conversion-test.html: Added.
            * svg/dom/SVGAngle-expected.txt:
            * svg/dom/SVGAnimatedBoolean-expected.txt:
            * svg/dom/SVGAnimatedEnumeration-expected.txt:
            * svg/dom/SVGAnimatedInteger-expected.txt:
            * svg/dom/SVGAnimatedNumber-expected.txt:
            * svg/dom/SVGLength-expected.txt:
            * svg/dom/SVGMatrix-expected.txt:
            * svg/dom/SVGNumber-expected.txt:
            * svg/dom/SVGPoint-expected.txt:
            * svg/dom/SVGPreserveAspectRatio-expected.txt:
            * svg/dom/SVGRect-expected.txt:
            * svg/dom/SVGTransform-expected.txt:
            * svg/dom/script-tests/SVGAngle.js:
            * svg/dom/script-tests/SVGAnimatedBoolean.js:
            * svg/dom/script-tests/SVGAnimatedEnumeration.js:
            * svg/dom/script-tests/SVGAnimatedInteger.js:
            * svg/dom/script-tests/SVGAnimatedNumber.js:
            * svg/dom/script-tests/SVGLength.js:
            * svg/dom/script-tests/SVGMatrix.js:
            * svg/dom/script-tests/SVGNumber.js:
            * svg/dom/script-tests/SVGPoint.js:
            * svg/dom/script-tests/SVGPreserveAspectRatio.js:
            * svg/dom/script-tests/SVGRect.js:
            * svg/dom/script-tests/SVGTransform.js:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72123 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 3aff03b..1e65329 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,43 @@
+2010-11-16  Kenneth Russell  <kbr at google.com>
+
+        Reviewed by Dimitri Glazkov.
+
+        WebIDL conversions from string to number and array to number should not generate TypeError
+        https://bugs.webkit.org/show_bug.cgi?id=49218
+
+        Updated SVG tests which were incorrectly expecting exceptions to be raised when the Web IDL
+        and ECMA-262 specifications state that none should be. Incorporated WebGL test from Khronos
+        repository verifying the passing objects of various types to APIs.
+
+        Ran all layout tests in Safari on Mac OS X.
+
+        * fast/canvas/webgl/type-conversion-test-expected.txt: Added.
+        * fast/canvas/webgl/type-conversion-test.html: Added.
+        * svg/dom/SVGAngle-expected.txt:
+        * svg/dom/SVGAnimatedBoolean-expected.txt:
+        * svg/dom/SVGAnimatedEnumeration-expected.txt:
+        * svg/dom/SVGAnimatedInteger-expected.txt:
+        * svg/dom/SVGAnimatedNumber-expected.txt:
+        * svg/dom/SVGLength-expected.txt:
+        * svg/dom/SVGMatrix-expected.txt:
+        * svg/dom/SVGNumber-expected.txt:
+        * svg/dom/SVGPoint-expected.txt:
+        * svg/dom/SVGPreserveAspectRatio-expected.txt:
+        * svg/dom/SVGRect-expected.txt:
+        * svg/dom/SVGTransform-expected.txt:
+        * svg/dom/script-tests/SVGAngle.js:
+        * svg/dom/script-tests/SVGAnimatedBoolean.js:
+        * svg/dom/script-tests/SVGAnimatedEnumeration.js:
+        * svg/dom/script-tests/SVGAnimatedInteger.js:
+        * svg/dom/script-tests/SVGAnimatedNumber.js:
+        * svg/dom/script-tests/SVGLength.js:
+        * svg/dom/script-tests/SVGMatrix.js:
+        * svg/dom/script-tests/SVGNumber.js:
+        * svg/dom/script-tests/SVGPoint.js:
+        * svg/dom/script-tests/SVGPreserveAspectRatio.js:
+        * svg/dom/script-tests/SVGRect.js:
+        * svg/dom/script-tests/SVGTransform.js:
+
 2010-11-16  Steve Falkenburg  <sfalken at apple.com>
 
         Unreviewed baseline update for Windows.
diff --git a/LayoutTests/fast/canvas/webgl/type-conversion-test-expected.txt b/LayoutTests/fast/canvas/webgl/type-conversion-test-expected.txt
new file mode 100644
index 0000000..bc75926
--- /dev/null
+++ b/LayoutTests/fast/canvas/webgl/type-conversion-test-expected.txt
@@ -0,0 +1,839 @@
+Tests calling WebGL APIs with various types
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS Program Compiled
+PASS Shader Compiled
+PASS getUniformLocation succeeded
+
+testing type of number : value = 0
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is non-null.
+PASS context.getActiveUniform(program, argument) is non-null.
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+
+testing type of number : value = 2
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is null
+PASS context.getActiveUniform(program, argument) is null
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+
+testing type of string that is NaN : value = foo
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is non-null.
+PASS context.getActiveUniform(program, argument) is non-null.
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+
+testing type of string that is number : value = 2
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is null
+PASS context.getActiveUniform(program, argument) is null
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+
+testing type of null : value = null
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is non-null.
+PASS context.getActiveUniform(program, argument) is non-null.
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+
+testing type of Empty Array : value = 
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is non-null.
+PASS context.getActiveUniform(program, argument) is non-null.
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+
+testing type of Object : value = [object Object]
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is non-null.
+PASS context.getActiveUniform(program, argument) is non-null.
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+
+testing type of Array of Number : value = 2
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is null
+PASS context.getActiveUniform(program, argument) is null
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+
+testing type of Array of String : value = foo
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is non-null.
+PASS context.getActiveUniform(program, argument) is non-null.
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+
+testing type of Array of String that is number : value = 0
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is non-null.
+PASS context.getActiveUniform(program, argument) is non-null.
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+
+testing type of Array of String that is number : value = 2
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is null
+PASS context.getActiveUniform(program, argument) is null
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+
+testing type of TypedArray : value = [object Float32Array]
+PASS context.bindAttribLocation(program, argument, 'foo') is undefined.
+PASS context.blendColor(argument, argument, argument, argument) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW) is undefined.
+PASS context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW) is undefined.
+PASS context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2)) is undefined.
+PASS context.clear(argument) is undefined.
+PASS context.clearColor(argument, 0, 0, 0) is undefined.
+PASS context.clearColor(0, argument, 0, 0) is undefined.
+PASS context.clearColor(0, 0, argument, 0) is undefined.
+PASS context.clearColor(0, 0, 0, argument) is undefined.
+PASS context.clearDepth(argument) is undefined.
+PASS context.clearStencil(argument) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0) is undefined.
+PASS context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0) is undefined.
+PASS context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument) is undefined.
+PASS context.depthMask(argument) is undefined.
+PASS context.depthRange(argument, 1) is undefined.
+PASS context.depthRange(0, argument) is undefined.
+PASS context.drawArrays(context.POINTS, argument, 1) is undefined.
+PASS context.drawArrays(context.POINTS, 0, argument) is undefined.
+PASS context.enableVertexAttribArray(argument) is undefined.
+PASS context.disableVertexAttribArray(argument) is undefined.
+PASS context.getActiveAttrib(program, argument) is non-null.
+PASS context.getActiveUniform(program, argument) is non-null.
+PASS context.getParameter(argument) is null
+PASS context.lineWidth(argument) is undefined.
+PASS context.polygonOffset(argument, 0) is undefined.
+PASS context.polygonOffset(0, argument) is undefined.
+PASS context.sampleCoverage(argument, 0) is undefined.
+PASS context.sampleCoverage(0, argument) is undefined.
+PASS context.scissor(argument, 0, 10, 10) is undefined.
+PASS context.scissor(0, argument, 10, 10) is undefined.
+PASS context.scissor(0, 0, argument, 10) is undefined.
+PASS context.scissor(0, 0, 10, argument) is undefined.
+PASS context.shaderSource(shader, argument) is undefined.
+PASS context.stencilFunc(context.NEVER, argument, 255) is undefined.
+PASS context.stencilFunc(context.NEVER, 0, argument) is undefined.
+PASS context.stencilMask(argument) is undefined.
+PASS context.uniform1i(loc, argument) is undefined.
+PASS context.uniform2i(loc, argument, 0) is undefined.
+PASS context.uniform2i(loc, 0, argument) is undefined.
+PASS context.uniform3i(loc, argument, 0, 0) is undefined.
+PASS context.uniform3i(loc, 0, argument, 0) is undefined.
+PASS context.uniform3i(loc, 0, 0, argument) is undefined.
+PASS context.uniform4i(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4i(loc, 0, 0, 0, argument) is undefined.
+PASS context.uniform1f(loc, argument) is undefined.
+PASS context.uniform2f(loc, argument, 0) is undefined.
+PASS context.uniform2f(loc, 0, argument) is undefined.
+PASS context.uniform3f(loc, argument, 0, 0) is undefined.
+PASS context.uniform3f(loc, 0, argument, 0) is undefined.
+PASS context.uniform3f(loc, 0, 0, argument) is undefined.
+PASS context.uniform4f(loc, argument, 0, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, argument, 0, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, argument, 0) is undefined.
+PASS context.uniform4f(loc, 0, 0, 0, argument) is undefined.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/canvas/webgl/type-conversion-test.html b/LayoutTests/fast/canvas/webgl/type-conversion-test.html
new file mode 100644
index 0000000..85a087c
--- /dev/null
+++ b/LayoutTests/fast/canvas/webgl/type-conversion-test.html
@@ -0,0 +1,144 @@
+<html>
+<head>
+<link rel="stylesheet" href="../../js/resources/js-test-style.css"/>
+<script src="../../js/resources/js-test-pre.js"></script>
+<script src="resources/webgl-test.js"></script>
+<script src="resources/webgl-test-utils.js"></script>
+</head>
+<body>
+<div id="description"></div>
+<div id="console"></div>
+
+<script>
+var wtu = WebGLTestUtils;
+description("Tests calling WebGL APIs with various types");
+
+var context = wtu.create3DContext();
+var program = wtu.loadStandardProgram(context);
+var shader = wtu.loadStandardVertexShader(context);
+var shouldGenerateGLError = wtu.shouldGenerateGLError;
+
+assertMsg(program != null, "Program Compiled");
+assertMsg(shader != null, "Shader Compiled");
+
+var loc = context.getUniformLocation(program, "u_modelViewProjMatrix");
+assertMsg(loc != null, "getUniformLocation succeeded");
+
+var buffer = context.createBuffer();
+context.bindBuffer(context.ARRAY_BUFFER, buffer);
+var texture = context.createTexture();
+context.bindTexture(context.TEXTURE_2D, texture);
+context.useProgram(program);
+
+var args = [
+  { type: "number", value: 0 },
+  { type: "number", value: 2 },
+  { type: "string that is NaN", value: "foo", },
+  { type: "string that is number", value: "2", },
+  { type: "null", value: null },
+  { type: "Empty Array", value: [] },
+  { type: "Object", value: {} },
+  { type: "Array of Number", value: [2] },
+  { type: "Array of String", value: ["foo"] },
+  { type: "Array of String that is number", value: ["0"] },
+  { type: "Array of String that is number", value: ["2"] },
+  { type: "TypedArray", value: new Float32Array(1) }
+];
+
+var argument;
+
+for (var i = 0; i < args.length; ++i) {
+  argument = args[i].value;
+  var func1 = shouldBeUndefined;
+  var func2 = shouldBeNonNull;
+  if (argument == 2) {
+    func2 = shouldBeNull;
+  }
+  func3 = shouldBeNull;
+  debug("");
+  debug("testing type of " + args[i].type + " : value = " + argument);
+  func1("context.bindAttribLocation(program, argument, 'foo')");
+  func1("context.blendColor(argument, argument, argument, argument)");
+  func1("context.bufferData(context.ARRAY_BUFFER, argument, context.STATIC_DRAW)");
+  func1("context.bufferData(context.ARRAY_BUFFER, new Float32Array(10), context.STATIC_DRAW)");
+  func1("context.bufferSubData(context.ARRAY_BUFFER, argument, new Float32Array(2))");
+  func1("context.clear(argument)")
+  func1("context.clearColor(argument, 0, 0, 0)");
+  func1("context.clearColor(0, argument, 0, 0)");
+  func1("context.clearColor(0, 0, argument, 0)");
+  func1("context.clearColor(0, 0, 0, argument)");
+  func1("context.clearDepth(argument)");
+  func1("context.clearStencil(argument)");
+  func1("context.copyTexImage2D(context.TEXTURE_2D, argument, context.RGBA, 0, 0, 1, 1, 0)");
+  func1("context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, argument, 0, 1, 1, 0)");
+  func1("context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, argument, 1, 1, 0)");
+  func1("context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, argument, 1, 0)");
+  func1("context.copyTexImage2D(context.TEXTURE_2D, 0, context.RGBA, 0, 0, 0, argument, 0)");
+  func1("context.copyTexSubImage2D(context.TEXTURE_2D, argument, 0, 0, 0, 0, 0, 0)");
+  func1("context.copyTexSubImage2D(context.TEXTURE_2D, 0, argument, 0, 0, 0, 0, 0)");
+  func1("context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, argument, 0, 0, 0, 0)");
+  func1("context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, argument, 0, 0, 0)");
+  func1("context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, argument, 0, 0)");
+  func1("context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, argument, 0)");
+  func1("context.copyTexSubImage2D(context.TEXTURE_2D, 0, 0, 0, 0, 0, 0, argument)");
+  func1("context.depthMask(argument)");
+  func1("context.depthRange(argument, 1)");
+  func1("context.depthRange(0, argument)");
+  func1("context.drawArrays(context.POINTS, argument, 1)");
+  func1("context.drawArrays(context.POINTS, 0, argument)");
+  //func1("context.drawElements(...)");
+  func1("context.enableVertexAttribArray(argument)");
+  func1("context.disableVertexAttribArray(argument)");
+  func2("context.getActiveAttrib(program, argument)");
+  func2("context.getActiveUniform(program, argument)");
+  func3("context.getParameter(argument)");
+  func1("context.lineWidth(argument)");
+  func1("context.polygonOffset(argument, 0)");
+  func1("context.polygonOffset(0, argument)");
+  //func1("context.readPixels(...)");
+  //func1("context.renderbufferStorage(...)");
+  func1("context.sampleCoverage(argument, 0)");
+  func1("context.sampleCoverage(0, argument)");
+  func1("context.scissor(argument, 0, 10, 10)");
+  func1("context.scissor(0, argument, 10, 10)");
+  func1("context.scissor(0, 0, argument, 10)");
+  func1("context.scissor(0, 0, 10, argument)");
+  func1("context.shaderSource(shader, argument)");
+  func1("context.stencilFunc(context.NEVER, argument, 255)");
+  func1("context.stencilFunc(context.NEVER, 0, argument)");
+  //func1("context.stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)");
+  func1("context.stencilMask(argument)");
+  //func1("context.stencilMaskSeparate(context.FRONT, argument);
+  //func1("context.texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView pixels)");
+  //func1("context.texParameterf(GLenum target, GLenum pname, GLfloat param)");
+  //func1("context.texParameteri(GLenum target, GLenum pname, GLint param)");
+  //func1("context.texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,GLsizei width, GLsizei height,GLenum format, GLenum type, ArrayBufferView pixels)");
+  func1("context.uniform1i(loc, argument)");
+  func1("context.uniform2i(loc, argument, 0)");
+  func1("context.uniform2i(loc, 0, argument)");
+  func1("context.uniform3i(loc, argument, 0, 0)");
+  func1("context.uniform3i(loc, 0, argument, 0)");
+  func1("context.uniform3i(loc, 0, 0, argument)");
+  func1("context.uniform4i(loc, argument, 0, 0, 0)");
+  func1("context.uniform4i(loc, 0, argument, 0, 0)");
+  func1("context.uniform4i(loc, 0, 0, argument, 0)");
+  func1("context.uniform4i(loc, 0, 0, 0, argument)");
+  func1("context.uniform1f(loc, argument)");
+  func1("context.uniform2f(loc, argument, 0)");
+  func1("context.uniform2f(loc, 0, argument)");
+  func1("context.uniform3f(loc, argument, 0, 0)");
+  func1("context.uniform3f(loc, 0, argument, 0)");
+  func1("context.uniform3f(loc, 0, 0, argument)");
+  func1("context.uniform4f(loc, argument, 0, 0, 0)");
+  func1("context.uniform4f(loc, 0, argument, 0, 0)");
+  func1("context.uniform4f(loc, 0, 0, argument, 0)");
+  func1("context.uniform4f(loc, 0, 0, 0, argument)");
+}
+
+successfullyParsed = true;
+</script>
+
+<script src="../../js/resources/js-test-post.js"></script>
+</body>
+</html>
+
diff --git a/LayoutTests/svg/dom/SVGAngle-expected.txt b/LayoutTests/svg/dom/SVGAngle-expected.txt
index 2f9bf84..3cc890e 100644
--- a/LayoutTests/svg/dom/SVGAngle-expected.txt
+++ b/LayoutTests/svg/dom/SVGAngle-expected.txt
@@ -14,9 +14,9 @@ Check invalid arguments for 'convertToSpecifiedUnits'
 PASS angle.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_UNKNOWN) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS angle.convertToSpecifiedUnits(-1) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS angle.convertToSpecifiedUnits(5) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
-PASS angle.convertToSpecifiedUnits('aString') threw exception TypeError: Type error.
-PASS angle.convertToSpecifiedUnits(angle) threw exception TypeError: Type error.
-PASS angle.convertToSpecifiedUnits(svgElement) threw exception TypeError: Type error.
+PASS angle.convertToSpecifiedUnits('aString') threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS angle.convertToSpecifiedUnits(angle) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS angle.convertToSpecifiedUnits(svgElement) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS angle.convertToSpecifiedUnits() threw exception SyntaxError: Not enough arguments.
 PASS angle.unitType is SVGAngle.SVG_ANGLETYPE_UNSPECIFIED
 
@@ -47,18 +47,22 @@ PASS angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_UNKNOWN, 50) threw exce
 PASS angle.newValueSpecifiedUnits(-1, 50) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS angle.newValueSpecifiedUnits(5, 50) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG) threw exception SyntaxError: Not enough arguments.
-PASS angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 'aString') threw exception TypeError: Type error.
-PASS angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, angle) threw exception TypeError: Type error.
-PASS angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, svgElement) threw exception TypeError: Type error.
+PASS angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 'aString') is undefined.
+PASS angle.value is NaN
+PASS angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 0) is undefined.
+PASS angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, angle) is undefined.
+PASS angle.value is NaN
+PASS angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, svgElement) is undefined.
+PASS angle.value is NaN
 PASS angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG) threw exception SyntaxError: Not enough arguments.
-PASS angle.newValueSpecifiedUnits('aString', 4) threw exception TypeError: Type error.
-PASS angle.newValueSpecifiedUnits(angle, 4) threw exception TypeError: Type error.
-PASS angle.newValueSpecifiedUnits(svgElement, 4) threw exception TypeError: Type error.
-PASS angle.newValueSpecifiedUnits('aString', 'aString') threw exception TypeError: Type error.
-PASS angle.newValueSpecifiedUnits(angle, angle) threw exception TypeError: Type error.
-PASS angle.newValueSpecifiedUnits(svgElement, svgElement) threw exception TypeError: Type error.
+PASS angle.newValueSpecifiedUnits('aString', 4) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS angle.newValueSpecifiedUnits(angle, 4) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS angle.newValueSpecifiedUnits(svgElement, 4) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS angle.newValueSpecifiedUnits('aString', 'aString') threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS angle.newValueSpecifiedUnits(angle, angle) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS angle.newValueSpecifiedUnits(svgElement, svgElement) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS angle.newValueSpecifiedUnits() threw exception SyntaxError: Not enough arguments.
-PASS angle.unitType is SVGAngle.SVG_ANGLETYPE_UNSPECIFIED
+PASS angle.unitType is SVGAngle.SVG_ANGLETYPE_DEG
 
 Check valid arguments for 'newValueSpecifiedUnits', that should only modify the 'valueAsString'
 PASS angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_RAD, parseFloat(Math.PI.toFixed(5))) is undefined.
@@ -114,27 +118,26 @@ PASS angle.valueInSpecifiedUnits is 0
 PASS angle.unitType is SVGAngle.SVG_ANGLETYPE_UNSPECIFIED
 
 Check setting invalid 'valueInSpecifiedUnits' arguments
-PASS angle.valueInSpecifiedUnits = 'test' threw exception TypeError: Type error.
-PASS angle.valueAsString is "0"
-PASS angle.value is 0
-PASS angle.valueInSpecifiedUnits is 0
+PASS angle.valueInSpecifiedUnits = 'test' is 'test'
+PASS angle.value is NaN
+PASS angle.valueInSpecifiedUnits is NaN
 PASS angle.unitType is SVGAngle.SVG_ANGLETYPE_UNSPECIFIED
-PASS angle.valueInSpecifiedUnits = angle threw exception TypeError: Type error.
-PASS angle.valueAsString is "0"
-PASS angle.value is 0
-PASS angle.valueInSpecifiedUnits is 0
+PASS angle.valueInSpecifiedUnits = 0 is 0
+PASS angle.valueInSpecifiedUnits = angle is angle
+PASS angle.value is NaN
+PASS angle.valueInSpecifiedUnits is NaN
 PASS angle.unitType is SVGAngle.SVG_ANGLETYPE_UNSPECIFIED
 
 Check setting invalid 'value' arguments
-PASS angle.value = 'test' threw exception TypeError: Type error.
-PASS angle.valueAsString is "0"
-PASS angle.value is 0
-PASS angle.valueInSpecifiedUnits is 0
+PASS angle.value = 0 is 0
+PASS angle.value = 'test' is 'test'
+PASS angle.value is NaN
+PASS angle.valueInSpecifiedUnits is NaN
 PASS angle.unitType is SVGAngle.SVG_ANGLETYPE_UNSPECIFIED
-PASS angle.value = angle threw exception TypeError: Type error.
-PASS angle.valueAsString is "0"
-PASS angle.value is 0
-PASS angle.valueInSpecifiedUnits is 0
+PASS angle.value = 0 is 0
+PASS angle.value = angle is angle
+PASS angle.value is NaN
+PASS angle.valueInSpecifiedUnits is NaN
 PASS angle.unitType is SVGAngle.SVG_ANGLETYPE_UNSPECIFIED
 
 Reset to angle in degree units
diff --git a/LayoutTests/svg/dom/SVGAnimatedBoolean-expected.txt b/LayoutTests/svg/dom/SVGAnimatedBoolean-expected.txt
index ca08176..936ffb3 100644
--- a/LayoutTests/svg/dom/SVGAnimatedBoolean-expected.txt
+++ b/LayoutTests/svg/dom/SVGAnimatedBoolean-expected.txt
@@ -20,14 +20,15 @@ Assure that rectElement.externalResourcesRequired has not been changed, but the
 PASS baseVal is false
 PASS rectElement.externalResourcesRequired.baseVal is true
 
-Check assigning invalid values
-PASS rectElement.externalResourcesRequired.baseVal = rectElement.externalResourcesRequired threw exception TypeError: Type error.
+Check assigning values of various types
+PASS rectElement.externalResourcesRequired.baseVal = rectElement.externalResourcesRequired is rectElement.externalResourcesRequired
+PASS rectElement.externalResourcesRequired.baseVal is true
 PASS rectElement.externalResourcesRequired.baseVal = null is null
-PASS rectElement.externalResourcesRequired.baseVal = 'aString' threw exception TypeError: Type error.
-PASS rectElement.externalResourcesRequired.baseVal = rectElement threw exception TypeError: Type error.
-
-Check that the value is now false
 PASS rectElement.externalResourcesRequired.baseVal is false
+PASS rectElement.externalResourcesRequired.baseVal = 'aString' is 'aString'
+PASS rectElement.externalResourcesRequired.baseVal is true
+PASS rectElement.externalResourcesRequired.baseVal = rectElement is rectElement
+PASS rectElement.externalResourcesRequired.baseVal is true
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/svg/dom/SVGAnimatedEnumeration-expected.txt b/LayoutTests/svg/dom/SVGAnimatedEnumeration-expected.txt
index c80b9fb..79ae25a 100644
--- a/LayoutTests/svg/dom/SVGAnimatedEnumeration-expected.txt
+++ b/LayoutTests/svg/dom/SVGAnimatedEnumeration-expected.txt
@@ -17,11 +17,15 @@ Check assigning various valid and invalid values
 FAIL clipPathElement.clipPathUnits.baseVal = 3 should throw an exception. Was 3.
 PASS clipPathElement.clipPathUnits.baseVal = 2 is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
 FAIL clipPathElement.clipPathUnits.baseVal = -1 should throw an exception. Was -1.
-PASS clipPathElement.clipPathUnits.baseVal = 'aString' threw exception TypeError: Type error.
-PASS clipPathElement.clipPathUnits.baseVal = clipPathElement threw exception TypeError: Type error.
+PASS clipPathElement.clipPathUnits.baseVal = 'aString' is 'aString'
+PASS clipPathElement.clipPathUnits.baseVal is 0
+PASS clipPathElement.clipPathUnits.baseVal = 2 is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS clipPathElement.clipPathUnits.baseVal = clipPathElement is clipPathElement
+PASS clipPathElement.clipPathUnits.baseVal is 0
+PASS clipPathElement.clipPathUnits.baseVal = 2 is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
 
 Check that the clipPathUnits value remained objectBBox
-PASS clipPathElement.clipPathUnits.baseVal = 2 is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS clipPathElement.clipPathUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/svg/dom/SVGAnimatedInteger-expected.txt b/LayoutTests/svg/dom/SVGAnimatedInteger-expected.txt
index 1e5f6b1..b779208 100644
--- a/LayoutTests/svg/dom/SVGAnimatedInteger-expected.txt
+++ b/LayoutTests/svg/dom/SVGAnimatedInteger-expected.txt
@@ -16,11 +16,14 @@ PASS filterElement.filterResX.baseVal is 0
 Check assigning various valid and invalid values
 PASS filterElement.filterResX.baseVal = -1 is -1
 PASS filterElement.filterResX.baseVal = 300 is 300
-PASS filterElement.filterResX.baseVal = 'aString' threw exception TypeError: Type error.
-PASS filterElement.filterResX.baseVal = filterElement threw exception TypeError: Type error.
+PASS filterElement.filterResX.baseVal = 'aString' is 'aString'
+PASS filterElement.filterResX.baseVal is 0
+PASS filterElement.filterResX.baseVal = filterElement is filterElement
+PASS filterElement.filterResX.baseVal is 0
+PASS filterElement.filterResX.baseVal = 300 is 300
 
 Check that the filterResX value remained 300
-PASS filterElement.filterResX.baseVal = 300 is 300
+PASS filterElement.filterResX.baseVal is 300
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/svg/dom/SVGAnimatedNumber-expected.txt b/LayoutTests/svg/dom/SVGAnimatedNumber-expected.txt
index d0ad365..a66df06 100644
--- a/LayoutTests/svg/dom/SVGAnimatedNumber-expected.txt
+++ b/LayoutTests/svg/dom/SVGAnimatedNumber-expected.txt
@@ -16,11 +16,15 @@ PASS feSpecularLightingElement.surfaceScale.baseVal is 1
 Check assigning various valid and invalid values
 PASS feSpecularLightingElement.surfaceScale.baseVal = -1 is -1
 PASS feSpecularLightingElement.surfaceScale.baseVal = 300 is 300
-PASS feSpecularLightingElement.surfaceScale.baseVal = 'aString' threw exception TypeError: Type error.
-PASS feSpecularLightingElement.surfaceScale.baseVal = feSpecularLightingElement threw exception TypeError: Type error.
+PASS feSpecularLightingElement.surfaceScale.baseVal = 'aString' is 'aString'
+PASS feSpecularLightingElement.surfaceScale.baseVal is NaN
+PASS feSpecularLightingElement.surfaceScale.baseVal = 0 is 0
+PASS feSpecularLightingElement.surfaceScale.baseVal = feSpecularLightingElement is feSpecularLightingElement
+PASS feSpecularLightingElement.surfaceScale.baseVal is NaN
+PASS feSpecularLightingElement.surfaceScale.baseVal = 300 is 300
 
 Check that the surfaceScale value remained 300
-PASS feSpecularLightingElement.surfaceScale.baseVal = 300 is 300
+PASS feSpecularLightingElement.surfaceScale.baseVal is 300
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/svg/dom/SVGLength-expected.txt b/LayoutTests/svg/dom/SVGLength-expected.txt
index a4b50ad..7f8ce63 100644
--- a/LayoutTests/svg/dom/SVGLength-expected.txt
+++ b/LayoutTests/svg/dom/SVGLength-expected.txt
@@ -33,16 +33,21 @@ Check invalid arguments for 'newValueSpecifiedUnits'
 PASS length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_UNKNOWN, 4) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS length.newValueSpecifiedUnits(-1, 4) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS length.newValueSpecifiedUnits(11, 4) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
-PASS length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 'aString') threw exception TypeError: Type error.
-PASS length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, length) threw exception TypeError: Type error.
-PASS length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, svgElement) threw exception TypeError: Type error.
+PASS length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 'aString') is undefined.
+PASS length.value is NaN
+PASS length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 0) is undefined.
+PASS length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, length) is undefined.
+PASS length.value is NaN
+PASS length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 0) is undefined.
+PASS length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, svgElement) is undefined.
+PASS length.value is NaN
 PASS length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX) threw exception SyntaxError: Not enough arguments.
-PASS length.newValueSpecifiedUnits('aString', 4) threw exception TypeError: Type error.
-PASS length.newValueSpecifiedUnits(length, 4) threw exception TypeError: Type error.
-PASS length.newValueSpecifiedUnits(svgElement, 4) threw exception TypeError: Type error.
-PASS length.newValueSpecifiedUnits('aString', 'aString') threw exception TypeError: Type error.
-PASS length.newValueSpecifiedUnits(length, length) threw exception TypeError: Type error.
-PASS length.newValueSpecifiedUnits(svgElement, svgElement) threw exception TypeError: Type error.
+PASS length.newValueSpecifiedUnits('aString', 4) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS length.newValueSpecifiedUnits(length, 4) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS length.newValueSpecifiedUnits(svgElement, 4) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS length.newValueSpecifiedUnits('aString', 'aString') threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS length.newValueSpecifiedUnits(length, length) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS length.newValueSpecifiedUnits(svgElement, svgElement) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS length.unitType is SVGLength.SVG_LENGTHTYPE_PX
 PASS length.value is 2
 PASS length.valueInSpecifiedUnits is 2
diff --git a/LayoutTests/svg/dom/SVGMatrix-expected.txt b/LayoutTests/svg/dom/SVGMatrix-expected.txt
index fe2301b..43e84b2 100644
--- a/LayoutTests/svg/dom/SVGMatrix-expected.txt
+++ b/LayoutTests/svg/dom/SVGMatrix-expected.txt
@@ -17,24 +17,60 @@ PASS matrix.a = 2 is 2
 PASS matrix.f = 200 is 200
 
 Check assigning invalid matrices
-PASS matrix.a = matrix threw exception TypeError: Type error.
-PASS matrix.a = svgElement threw exception TypeError: Type error.
-PASS matrix.a = 'aString' threw exception TypeError: Type error.
-PASS matrix.b = matrix threw exception TypeError: Type error.
-PASS matrix.b = svgElement threw exception TypeError: Type error.
-PASS matrix.b = 'aString' threw exception TypeError: Type error.
-PASS matrix.c = matrix threw exception TypeError: Type error.
-PASS matrix.c = svgElement threw exception TypeError: Type error.
-PASS matrix.c = 'aString' threw exception TypeError: Type error.
-PASS matrix.d = matrix threw exception TypeError: Type error.
-PASS matrix.d = svgElement threw exception TypeError: Type error.
-PASS matrix.d = 'aString' threw exception TypeError: Type error.
-PASS matrix.e = matrix threw exception TypeError: Type error.
-PASS matrix.e = svgElement threw exception TypeError: Type error.
-PASS matrix.e = 'aString' threw exception TypeError: Type error.
-PASS matrix.f = matrix threw exception TypeError: Type error.
-PASS matrix.f = svgElement threw exception TypeError: Type error.
-PASS matrix.f = 'aString' threw exception TypeError: Type error.
+PASS matrix.a = matrix is matrix
+PASS matrix.a is NaN
+PASS matrix.a = 0 is 0
+PASS matrix.a = svgElement is svgElement
+PASS matrix.a is NaN
+PASS matrix.a = 0 is 0
+PASS matrix.a = 'aString' is 'aString'
+PASS matrix.a is NaN
+PASS matrix.a = 2 is 2
+PASS matrix.b = matrix is matrix
+PASS matrix.b is NaN
+PASS matrix.b = 0 is 0
+PASS matrix.b = svgElement is svgElement
+PASS matrix.b is NaN
+PASS matrix.b = 0 is 0
+PASS matrix.b = 'aString' is 'aString'
+PASS matrix.b is NaN
+PASS matrix.b = 0 is 0
+PASS matrix.c = matrix is matrix
+PASS matrix.c is NaN
+PASS matrix.c = 0 is 0
+PASS matrix.c = svgElement is svgElement
+PASS matrix.c is NaN
+PASS matrix.c = 0 is 0
+PASS matrix.c = 'aString' is 'aString'
+PASS matrix.c is NaN
+PASS matrix.c = 0 is 0
+PASS matrix.d = matrix is matrix
+PASS matrix.d is NaN
+PASS matrix.d = 0 is 0
+PASS matrix.d = svgElement is svgElement
+PASS matrix.d is NaN
+PASS matrix.d = 0 is 0
+PASS matrix.d = 'aString' is 'aString'
+PASS matrix.d is NaN
+PASS matrix.d = 1 is 1
+PASS matrix.e = matrix is matrix
+PASS matrix.e is NaN
+PASS matrix.e = 0 is 0
+PASS matrix.e = svgElement is svgElement
+PASS matrix.e is NaN
+PASS matrix.e = 0 is 0
+PASS matrix.e = 'aString' is 'aString'
+PASS matrix.e is NaN
+PASS matrix.e = 0 is 0
+PASS matrix.f = matrix is matrix
+PASS matrix.f is NaN
+PASS matrix.f = 0 is 0
+PASS matrix.f = svgElement is svgElement
+PASS matrix.f is NaN
+PASS matrix.f = 0 is 0
+PASS matrix.f = 'aString' is 'aString'
+PASS matrix.f is NaN
+PASS matrix.f = 200 is 200
 
 Check that the matrix is still containing the correct values
 PASS matrix.a is 2
@@ -66,17 +102,17 @@ PASS matrix.translate(true) threw exception SyntaxError: Not enough arguments.
 PASS matrix.translate(2) threw exception SyntaxError: Not enough arguments.
 PASS matrix.translate('aString') threw exception SyntaxError: Not enough arguments.
 PASS matrix.translate(svgElement) threw exception SyntaxError: Not enough arguments.
-PASS matrix.translate('aString', 'aString') threw exception TypeError: Type error.
-PASS matrix.translate(svgElement, svgElement) threw exception TypeError: Type error.
-PASS matrix.translate(2, 'aString') threw exception TypeError: Type error.
-PASS matrix.translate(2, svgElement) threw exception TypeError: Type error.
-PASS matrix.translate('aString', 2) threw exception TypeError: Type error.
-PASS matrix.translate(svgElement, 2) threw exception TypeError: Type error.
+PASS matrix.translate('aString', 'aString') is non-null.
+PASS matrix.translate(svgElement, svgElement) is non-null.
+PASS matrix.translate(2, 'aString') is non-null.
+PASS matrix.translate(2, svgElement) is non-null.
+PASS matrix.translate('aString', 2) is non-null.
+PASS matrix.translate(svgElement, 2) is non-null.
 
 Check calling 'scale' with invalid arguments
 PASS matrix.scale() threw exception SyntaxError: Not enough arguments.
-PASS matrix.scale('aString') threw exception TypeError: Type error.
-PASS matrix.scale(svgElement) threw exception TypeError: Type error.
+PASS matrix.scale('aString') is non-null.
+PASS matrix.scale(svgElement) is non-null.
 
 Check calling 'scaleNonUniform' with invalid arguments
 PASS matrix.scaleNonUniform() threw exception SyntaxError: Not enough arguments.
@@ -84,17 +120,17 @@ PASS matrix.scaleNonUniform(true) threw exception SyntaxError: Not enough argume
 PASS matrix.scaleNonUniform(2) threw exception SyntaxError: Not enough arguments.
 PASS matrix.scaleNonUniform('aString') threw exception SyntaxError: Not enough arguments.
 PASS matrix.scaleNonUniform(svgElement) threw exception SyntaxError: Not enough arguments.
-PASS matrix.scaleNonUniform('aString', 'aString') threw exception TypeError: Type error.
-PASS matrix.scaleNonUniform(svgElement, svgElement) threw exception TypeError: Type error.
-PASS matrix.scaleNonUniform(2, 'aString') threw exception TypeError: Type error.
-PASS matrix.scaleNonUniform(2, svgElement) threw exception TypeError: Type error.
-PASS matrix.scaleNonUniform('aString', 2) threw exception TypeError: Type error.
-PASS matrix.scaleNonUniform(svgElement, 2) threw exception TypeError: Type error.
+PASS matrix.scaleNonUniform('aString', 'aString') is non-null.
+PASS matrix.scaleNonUniform(svgElement, svgElement) is non-null.
+PASS matrix.scaleNonUniform(2, 'aString') is non-null.
+PASS matrix.scaleNonUniform(2, svgElement) is non-null.
+PASS matrix.scaleNonUniform('aString', 2) is non-null.
+PASS matrix.scaleNonUniform(svgElement, 2) is non-null.
 
 Check calling 'rotate' with invalid arguments
 PASS matrix.rotate() threw exception SyntaxError: Not enough arguments.
-PASS matrix.rotate('aString') threw exception TypeError: Type error.
-PASS matrix.rotate(svgElement) threw exception TypeError: Type error.
+PASS matrix.rotate('aString') is non-null.
+PASS matrix.rotate(svgElement) is non-null.
 
 Check calling 'rotateFromVector' with invalid arguments
 PASS matrix.rotateFromVector() threw exception SyntaxError: Not enough arguments.
@@ -102,22 +138,22 @@ PASS matrix.rotateFromVector(true) threw exception SyntaxError: Not enough argum
 PASS matrix.rotateFromVector(2) threw exception SyntaxError: Not enough arguments.
 PASS matrix.rotateFromVector('aString') threw exception SyntaxError: Not enough arguments.
 PASS matrix.rotateFromVector(svgElement) threw exception SyntaxError: Not enough arguments.
-PASS matrix.rotateFromVector('aString', 'aString') threw exception TypeError: Type error.
-PASS matrix.rotateFromVector(svgElement, svgElement) threw exception TypeError: Type error.
-PASS matrix.rotateFromVector(2, 'aString') threw exception TypeError: Type error.
-PASS matrix.rotateFromVector(2, svgElement) threw exception TypeError: Type error.
-PASS matrix.rotateFromVector('aString', 2) threw exception TypeError: Type error.
-PASS matrix.rotateFromVector(svgElement, 2) threw exception TypeError: Type error.
+PASS matrix.rotateFromVector('aString', 'aString') is non-null.
+PASS matrix.rotateFromVector(svgElement, svgElement) is non-null.
+PASS matrix.rotateFromVector(2, 'aString') is non-null.
+PASS matrix.rotateFromVector(2, svgElement) is non-null.
+PASS matrix.rotateFromVector('aString', 2) is non-null.
+PASS matrix.rotateFromVector(svgElement, 2) is non-null.
 
 Check calling 'skewX' with invalid arguments
 PASS matrix.skewX() threw exception SyntaxError: Not enough arguments.
-PASS matrix.skewX('aString') threw exception TypeError: Type error.
-PASS matrix.skewX(svgElement) threw exception TypeError: Type error.
+PASS matrix.skewX('aString') is non-null.
+PASS matrix.skewX(svgElement) is non-null.
 
 Check calling 'skewY' with invalid arguments
 PASS matrix.skewY() threw exception SyntaxError: Not enough arguments.
-PASS matrix.skewY('aString') threw exception TypeError: Type error.
-PASS matrix.skewY(svgElement) threw exception TypeError: Type error.
+PASS matrix.skewY('aString') is non-null.
+PASS matrix.skewY(svgElement) is non-null.
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/svg/dom/SVGNumber-expected.txt b/LayoutTests/svg/dom/SVGNumber-expected.txt
index e0eb0d8..dbc7f99 100644
--- a/LayoutTests/svg/dom/SVGNumber-expected.txt
+++ b/LayoutTests/svg/dom/SVGNumber-expected.txt
@@ -17,11 +17,11 @@ Check that numbers are static, caching value in a local variable and modifying i
 PASS numRef is 1000
 PASS num.value is -12345678
 
-Check assigning invalid number, number should be null afterwards
-PASS num.value = num threw exception TypeError: Type error.
-PASS num.value = 'aString' threw exception TypeError: Type error.
-PASS num.value = svgElement threw exception TypeError: Type error.
-PASS num.value is -12345678
+Check assigning invalid number, number should be 0 afterwards
+PASS num.value = num is num
+PASS num.value = 'aString' is 'aString'
+PASS num.value = svgElement is svgElement
+PASS num.value is NaN
 PASS num.value = null is null
 
 Check that the number is now null
diff --git a/LayoutTests/svg/dom/SVGPoint-expected.txt b/LayoutTests/svg/dom/SVGPoint-expected.txt
index 1aed6cb..a638f98 100644
--- a/LayoutTests/svg/dom/SVGPoint-expected.txt
+++ b/LayoutTests/svg/dom/SVGPoint-expected.txt
@@ -13,11 +13,11 @@ PASS point.x = 100 is 100
 PASS point.y = 200 is 200
 
 Check assigning invalid points
-PASS point.x = point threw exception TypeError: Type error.
+PASS point.x = point is point
 PASS point.y = null is null
 
-Check that the point is still containing the correct values
-PASS point.x is 100
+Check that the point contains the correct values
+PASS point.x is NaN
 PASS point.y is 0
 
 Reset to -50, 100
diff --git a/LayoutTests/svg/dom/SVGPreserveAspectRatio-expected.txt b/LayoutTests/svg/dom/SVGPreserveAspectRatio-expected.txt
index 852c694..0bc784d 100644
--- a/LayoutTests/svg/dom/SVGPreserveAspectRatio-expected.txt
+++ b/LayoutTests/svg/dom/SVGPreserveAspectRatio-expected.txt
@@ -13,19 +13,19 @@ PASS preserveAspectRatio.align = SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_
 PASS preserveAspectRatio.meetOrSlice = SVGPreserveAspectRatio.SVG_MEETORSLICE_SLICE is SVGPreserveAspectRatio.SVG_MEETORSLICE_SLICE
 
 Check assigning invalid align values
-PASS preserveAspectRatio.align = preserveAspectRatio threw exception TypeError: Type error.
+PASS preserveAspectRatio.align = preserveAspectRatio threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS preserveAspectRatio.align = null threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
-PASS preserveAspectRatio.align = 'aString' threw exception TypeError: Type error.
-PASS preserveAspectRatio.align = svgElement threw exception TypeError: Type error.
+PASS preserveAspectRatio.align = 'aString' threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS preserveAspectRatio.align = svgElement threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS preserveAspectRatio.align = SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_UNKNOWN threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS preserveAspectRatio.align = -1 threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS preserveAspectRatio.align = 11 threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 
 Check assigning invalid meetOrSlice values
-PASS preserveAspectRatio.meetOrSlice = preserveAspectRatio threw exception TypeError: Type error.
+PASS preserveAspectRatio.meetOrSlice = preserveAspectRatio threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS preserveAspectRatio.meetOrSlice = null threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
-PASS preserveAspectRatio.meetOrSlice = 'aString' threw exception TypeError: Type error.
-PASS preserveAspectRatio.meetOrSlice = svgElement threw exception TypeError: Type error.
+PASS preserveAspectRatio.meetOrSlice = 'aString' threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
+PASS preserveAspectRatio.meetOrSlice = svgElement threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS preserveAspectRatio.meetOrSlice = SVGPreserveAspectRatio.SVG_MEETORSLICE_UNKNOWN threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS preserveAspectRatio.meetOrSlice = -1 threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
 PASS preserveAspectRatio.meetOrSlice = 3 threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
diff --git a/LayoutTests/svg/dom/SVGRect-expected.txt b/LayoutTests/svg/dom/SVGRect-expected.txt
index fa01a66..4871401 100644
--- a/LayoutTests/svg/dom/SVGRect-expected.txt
+++ b/LayoutTests/svg/dom/SVGRect-expected.txt
@@ -15,18 +15,23 @@ PASS rect.x = 100 is 100
 PASS rect.y = 200 is 200
 PASS rect.width = 300 is 300
 PASS rect.height = 400 is 400
+Check that the rect contains the correct values
+PASS rect.x is 100
+PASS rect.y is 200
+PASS rect.width is 300
+PASS rect.height is 400
 
 Check assigning invalid rects
-PASS rect.x = rect threw exception TypeError: Type error.
+PASS rect.x = rect is rect
 PASS rect.y = null is null
-PASS rect.width = 'aString' threw exception TypeError: Type error.
-PASS rect.height = svgElement threw exception TypeError: Type error.
+PASS rect.width = 'aString' is 'aString'
+PASS rect.height = svgElement is svgElement
 
-Check that the rect is still containing the correct values
-PASS rect.x is 100
+Check that the rect contains the correct values
+PASS rect.x is NaN
 PASS rect.y is 0
-PASS rect.width is 300
-PASS rect.height is 400
+PASS rect.width is NaN
+PASS rect.height is NaN
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/svg/dom/SVGTransform-expected.txt b/LayoutTests/svg/dom/SVGTransform-expected.txt
index 5f8c178..d5c8c5d 100644
--- a/LayoutTests/svg/dom/SVGTransform-expected.txt
+++ b/LayoutTests/svg/dom/SVGTransform-expected.txt
@@ -61,30 +61,30 @@ PASS transform.setTranslate() threw exception SyntaxError: Not enough arguments.
 PASS transform.setTranslate(transform) threw exception SyntaxError: Not enough arguments.
 PASS transform.setTranslate(svgElement) threw exception SyntaxError: Not enough arguments.
 PASS transform.setTranslate('aString') threw exception SyntaxError: Not enough arguments.
-PASS transform.setTranslate(1, transform) threw exception TypeError: Type error.
-PASS transform.setTranslate(1, svgElement) threw exception TypeError: Type error.
-PASS transform.setTranslate(1, 'aString') threw exception TypeError: Type error.
-PASS transform.setTranslate(transform, 1) threw exception TypeError: Type error.
-PASS transform.setTranslate(svgElement, 1) threw exception TypeError: Type error.
-PASS transform.setTranslate('aString', 1) threw exception TypeError: Type error.
-PASS transform.setTranslate(transform, transform) threw exception TypeError: Type error.
-PASS transform.setTranslate(svgElement, svgElement) threw exception TypeError: Type error.
-PASS transform.setTranslate('aString', 'aString') threw exception TypeError: Type error.
+PASS transform.setTranslate(1, transform) is undefined.
+PASS transform.setTranslate(1, svgElement) is undefined.
+PASS transform.setTranslate(1, 'aString') is undefined.
+PASS transform.setTranslate(transform, 1) is undefined.
+PASS transform.setTranslate(svgElement, 1) is undefined.
+PASS transform.setTranslate('aString', 1) is undefined.
+PASS transform.setTranslate(transform, transform) is undefined.
+PASS transform.setTranslate(svgElement, svgElement) is undefined.
+PASS transform.setTranslate('aString', 'aString') is undefined.
 
 Check passing invalid arguments to 'setScale'
 PASS transform.setScale() threw exception SyntaxError: Not enough arguments.
 PASS transform.setScale(transform) threw exception SyntaxError: Not enough arguments.
 PASS transform.setScale(svgElement) threw exception SyntaxError: Not enough arguments.
 PASS transform.setScale('aString') threw exception SyntaxError: Not enough arguments.
-PASS transform.setScale(1, transform) threw exception TypeError: Type error.
-PASS transform.setScale(1, svgElement) threw exception TypeError: Type error.
-PASS transform.setScale(1, 'aString') threw exception TypeError: Type error.
-PASS transform.setScale(transform, 1) threw exception TypeError: Type error.
-PASS transform.setScale(svgElement, 1) threw exception TypeError: Type error.
-PASS transform.setScale('aString', 1) threw exception TypeError: Type error.
-PASS transform.setScale(transform, transform) threw exception TypeError: Type error.
-PASS transform.setScale(svgElement, svgElement) threw exception TypeError: Type error.
-PASS transform.setScale('aString', 'aString') threw exception TypeError: Type error.
+PASS transform.setScale(1, transform) is undefined.
+PASS transform.setScale(1, svgElement) is undefined.
+PASS transform.setScale(1, 'aString') is undefined.
+PASS transform.setScale(transform, 1) is undefined.
+PASS transform.setScale(svgElement, 1) is undefined.
+PASS transform.setScale('aString', 1) is undefined.
+PASS transform.setScale(transform, transform) is undefined.
+PASS transform.setScale(svgElement, svgElement) is undefined.
+PASS transform.setScale('aString', 'aString') is undefined.
 
 Check passing invalid arguments to 'setRotate'
 PASS transform.setRotate() threw exception SyntaxError: Not enough arguments.
@@ -94,21 +94,21 @@ PASS transform.setRotate('aString') threw exception SyntaxError: Not enough argu
 PASS transform.setRotate(1, transform) threw exception SyntaxError: Not enough arguments.
 PASS transform.setRotate(1, svgElement) threw exception SyntaxError: Not enough arguments.
 PASS transform.setRotate(1, 'aString') threw exception SyntaxError: Not enough arguments.
-PASS transform.setRotate(1, 1, transform) threw exception TypeError: Type error.
-PASS transform.setRotate(1, 1, svgElement) threw exception TypeError: Type error.
-PASS transform.setRotate(1, 1, 'aString') threw exception TypeError: Type error.
+PASS transform.setRotate(1, 1, transform) is undefined.
+PASS transform.setRotate(1, 1, svgElement) is undefined.
+PASS transform.setRotate(1, 1, 'aString') is undefined.
 
 Check passing invalid arguments to 'setSkewX'
 PASS transform.setSkewX() threw exception SyntaxError: Not enough arguments.
-PASS transform.setSkewX(transform) threw exception TypeError: Type error.
-PASS transform.setSkewX(svgElement) threw exception TypeError: Type error.
-PASS transform.setSkewX('aString') threw exception TypeError: Type error.
+PASS transform.setSkewX(transform) is undefined.
+PASS transform.setSkewX(svgElement) is undefined.
+PASS transform.setSkewX('aString') is undefined.
 
 Check passing invalid arguments to 'setSkewY'
 PASS transform.setSkewY() threw exception SyntaxError: Not enough arguments.
-PASS transform.setSkewY(transform) threw exception TypeError: Type error.
-PASS transform.setSkewY(svgElement) threw exception TypeError: Type error.
-PASS transform.setSkewY('aString') threw exception TypeError: Type error.
+PASS transform.setSkewY(transform) is undefined.
+PASS transform.setSkewY(svgElement) is undefined.
+PASS transform.setSkewY('aString') is undefined.
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/svg/dom/script-tests/SVGAngle.js b/LayoutTests/svg/dom/script-tests/SVGAngle.js
index d544d41..2ad104c 100644
--- a/LayoutTests/svg/dom/script-tests/SVGAngle.js
+++ b/LayoutTests/svg/dom/script-tests/SVGAngle.js
@@ -16,8 +16,12 @@ debug("Check invalid arguments for 'convertToSpecifiedUnits'");
 shouldThrow("angle.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_UNKNOWN)");
 shouldThrow("angle.convertToSpecifiedUnits(-1)");
 shouldThrow("angle.convertToSpecifiedUnits(5)");
+// 'aString' converts to short 0 (through NaN) according to ECMA-262, ToUint16.
+// Therefore this throws NOT_SUPPORTED_ERR.
 shouldThrow("angle.convertToSpecifiedUnits('aString')");
+// Same here, via ToString conversion of object.
 shouldThrow("angle.convertToSpecifiedUnits(angle)");
+// Same here, via ToString conversion of object.
 shouldThrow("angle.convertToSpecifiedUnits(svgElement)");
 shouldThrow("angle.convertToSpecifiedUnits()");
 shouldBe("angle.unitType", "SVGAngle.SVG_ANGLETYPE_UNSPECIFIED");
@@ -55,10 +59,15 @@ shouldThrow("angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_UNKNOWN, 50)");
 shouldThrow("angle.newValueSpecifiedUnits(-1, 50)");
 shouldThrow("angle.newValueSpecifiedUnits(5, 50)");
 shouldThrow("angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG)");
-shouldThrow("angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 'aString')");
-shouldThrow("angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, angle)");
-shouldThrow("angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, svgElement)");
+shouldBeUndefined("angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 'aString')");
+shouldBe("angle.value", "NaN");
+shouldBeUndefined("angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 0)");
+shouldBeUndefined("angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, angle)");
+shouldBe("angle.value", "NaN");
+shouldBeUndefined("angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, svgElement)");
+shouldBe("angle.value", "NaN");
 shouldThrow("angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG)");
+// All of the following unitType arguments convert to 0 (SVG_ANGLETYPE_UNKNOWN).
 shouldThrow("angle.newValueSpecifiedUnits('aString', 4)");
 shouldThrow("angle.newValueSpecifiedUnits(angle, 4)");
 shouldThrow("angle.newValueSpecifiedUnits(svgElement, 4)");
@@ -66,7 +75,7 @@ shouldThrow("angle.newValueSpecifiedUnits('aString', 'aString')");
 shouldThrow("angle.newValueSpecifiedUnits(angle, angle)");
 shouldThrow("angle.newValueSpecifiedUnits(svgElement, svgElement)");
 shouldThrow("angle.newValueSpecifiedUnits()");
-shouldBe("angle.unitType", "SVGAngle.SVG_ANGLETYPE_UNSPECIFIED");
+shouldBe("angle.unitType", "SVGAngle.SVG_ANGLETYPE_DEG");
 
 debug("");
 debug("Check valid arguments for 'newValueSpecifiedUnits', that should only modify the 'valueAsString'");
@@ -134,30 +143,29 @@ shouldBe("angle.unitType", "SVGAngle.SVG_ANGLETYPE_UNSPECIFIED");
 
 debug("");
 debug("Check setting invalid 'valueInSpecifiedUnits' arguments");
-shouldThrow("angle.valueInSpecifiedUnits = 'test'");
-shouldBeEqualToString("angle.valueAsString", "0");
-shouldBe("angle.value", "0");
-shouldBe("angle.valueInSpecifiedUnits", "0");
+shouldBe("angle.valueInSpecifiedUnits = 'test'", "'test'");
+shouldBe("angle.value", "NaN");
+shouldBe("angle.valueInSpecifiedUnits", "NaN");
 shouldBe("angle.unitType", "SVGAngle.SVG_ANGLETYPE_UNSPECIFIED");
+shouldBe("angle.valueInSpecifiedUnits = 0", "0");
 
-shouldThrow("angle.valueInSpecifiedUnits = angle");
-shouldBeEqualToString("angle.valueAsString", "0");
-shouldBe("angle.value", "0");
-shouldBe("angle.valueInSpecifiedUnits", "0");
+shouldBe("angle.valueInSpecifiedUnits = angle", "angle");
+shouldBe("angle.value", "NaN");
+shouldBe("angle.valueInSpecifiedUnits", "NaN");
 shouldBe("angle.unitType", "SVGAngle.SVG_ANGLETYPE_UNSPECIFIED");
 
 debug("");
 debug("Check setting invalid 'value' arguments");
-shouldThrow("angle.value = 'test'");
-shouldBeEqualToString("angle.valueAsString", "0");
-shouldBe("angle.value", "0");
-shouldBe("angle.valueInSpecifiedUnits", "0");
+shouldBe("angle.value = 0", "0");
+shouldBe("angle.value = 'test'", "'test'");
+shouldBe("angle.value", "NaN");
+shouldBe("angle.valueInSpecifiedUnits", "NaN");
 shouldBe("angle.unitType", "SVGAngle.SVG_ANGLETYPE_UNSPECIFIED");
 
-shouldThrow("angle.value = angle");
-shouldBeEqualToString("angle.valueAsString", "0");
-shouldBe("angle.value", "0");
-shouldBe("angle.valueInSpecifiedUnits", "0");
+shouldBe("angle.value = 0", "0");
+shouldBe("angle.value = angle", "angle");
+shouldBe("angle.value", "NaN");
+shouldBe("angle.valueInSpecifiedUnits", "NaN");
 shouldBe("angle.unitType", "SVGAngle.SVG_ANGLETYPE_UNSPECIFIED");
 
 debug("");
diff --git a/LayoutTests/svg/dom/script-tests/SVGAnimatedBoolean.js b/LayoutTests/svg/dom/script-tests/SVGAnimatedBoolean.js
index ecc8a90..2489c5d 100644
--- a/LayoutTests/svg/dom/script-tests/SVGAnimatedBoolean.js
+++ b/LayoutTests/svg/dom/script-tests/SVGAnimatedBoolean.js
@@ -24,14 +24,16 @@ shouldBe("baseVal", "false");
 shouldBe("rectElement.externalResourcesRequired.baseVal", "true");
 
 debug("");
-debug("Check assigning invalid values");
-shouldThrow("rectElement.externalResourcesRequired.baseVal = rectElement.externalResourcesRequired");
+debug("Check assigning values of various types");
+// ECMA-262, 9.2, "ToBoolean"
+shouldBe("rectElement.externalResourcesRequired.baseVal = rectElement.externalResourcesRequired", "rectElement.externalResourcesRequired");
+shouldBe("rectElement.externalResourcesRequired.baseVal", "true");
 shouldBeNull("rectElement.externalResourcesRequired.baseVal = null");
-shouldThrow("rectElement.externalResourcesRequired.baseVal = 'aString'");
-shouldThrow("rectElement.externalResourcesRequired.baseVal = rectElement");
-
-debug("");
-debug("Check that the value is now false");
 shouldBe("rectElement.externalResourcesRequired.baseVal", "false");
+shouldBe("rectElement.externalResourcesRequired.baseVal = 'aString'", "'aString'");
+shouldBe("rectElement.externalResourcesRequired.baseVal", "true");
+rectElement.externalResourcesRequired.baseVal = false;
+shouldBe("rectElement.externalResourcesRequired.baseVal = rectElement", "rectElement");
+shouldBe("rectElement.externalResourcesRequired.baseVal", "true");
 
 successfullyParsed = true;
diff --git a/LayoutTests/svg/dom/script-tests/SVGAnimatedEnumeration.js b/LayoutTests/svg/dom/script-tests/SVGAnimatedEnumeration.js
index 7bb637c..bcd89a2 100644
--- a/LayoutTests/svg/dom/script-tests/SVGAnimatedEnumeration.js
+++ b/LayoutTests/svg/dom/script-tests/SVGAnimatedEnumeration.js
@@ -20,11 +20,16 @@ debug("Check assigning various valid and invalid values");
 shouldThrow("clipPathElement.clipPathUnits.baseVal = 3"); // FIXME: Doesn't throw in WebKit, we're not clamping to the allowed range.
 shouldBe("clipPathElement.clipPathUnits.baseVal = 2", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
 shouldThrow("clipPathElement.clipPathUnits.baseVal = -1"); // FIXME: Doesn't throw in WebKit, we're not clamping to the allowed range.
-shouldThrow("clipPathElement.clipPathUnits.baseVal = 'aString'");
-shouldThrow("clipPathElement.clipPathUnits.baseVal = clipPathElement");
+// ECMA-262, 9.7, "ToUint16"
+shouldBe("clipPathElement.clipPathUnits.baseVal = 'aString'", "'aString'");
+shouldBe("clipPathElement.clipPathUnits.baseVal", "0");
+shouldBe("clipPathElement.clipPathUnits.baseVal = 2", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBe("clipPathElement.clipPathUnits.baseVal = clipPathElement", "clipPathElement");
+shouldBe("clipPathElement.clipPathUnits.baseVal", "0");
+shouldBe("clipPathElement.clipPathUnits.baseVal = 2", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
 
 debug("");
 debug("Check that the clipPathUnits value remained objectBBox");
-shouldBe("clipPathElement.clipPathUnits.baseVal = 2", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBe("clipPathElement.clipPathUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
 
 successfullyParsed = true;
diff --git a/LayoutTests/svg/dom/script-tests/SVGAnimatedInteger.js b/LayoutTests/svg/dom/script-tests/SVGAnimatedInteger.js
index 184e848..7756ec7 100644
--- a/LayoutTests/svg/dom/script-tests/SVGAnimatedInteger.js
+++ b/LayoutTests/svg/dom/script-tests/SVGAnimatedInteger.js
@@ -19,11 +19,15 @@ debug("");
 debug("Check assigning various valid and invalid values");
 shouldBe("filterElement.filterResX.baseVal = -1", "-1"); // Negative values are allowed from SVG DOM, but should lead to an error when rendering (disable the filter)
 shouldBe("filterElement.filterResX.baseVal = 300", "300");
-shouldThrow("filterElement.filterResX.baseVal = 'aString'");
-shouldThrow("filterElement.filterResX.baseVal = filterElement");
+// ECMA-262, 9.5, "ToInt32"
+shouldBe("filterElement.filterResX.baseVal = 'aString'", "'aString'");
+shouldBe("filterElement.filterResX.baseVal", "0");
+shouldBe("filterElement.filterResX.baseVal = filterElement", "filterElement");
+shouldBe("filterElement.filterResX.baseVal", "0");
+shouldBe("filterElement.filterResX.baseVal = 300", "300");
 
 debug("");
 debug("Check that the filterResX value remained 300");
-shouldBe("filterElement.filterResX.baseVal = 300", "300");
+shouldBe("filterElement.filterResX.baseVal", "300");
 
 successfullyParsed = true;
diff --git a/LayoutTests/svg/dom/script-tests/SVGAnimatedNumber.js b/LayoutTests/svg/dom/script-tests/SVGAnimatedNumber.js
index 42a48a7..2066ab9 100644
--- a/LayoutTests/svg/dom/script-tests/SVGAnimatedNumber.js
+++ b/LayoutTests/svg/dom/script-tests/SVGAnimatedNumber.js
@@ -19,11 +19,16 @@ debug("");
 debug("Check assigning various valid and invalid values");
 shouldBe("feSpecularLightingElement.surfaceScale.baseVal = -1", "-1"); // Negative values are allowed from SVG DOM, but should lead to an error when rendering (disable the filter)
 shouldBe("feSpecularLightingElement.surfaceScale.baseVal = 300", "300");
-shouldThrow("feSpecularLightingElement.surfaceScale.baseVal = 'aString'");
-shouldThrow("feSpecularLightingElement.surfaceScale.baseVal = feSpecularLightingElement");
+// ECMA-262, 9.3, "ToNumber"
+shouldBe("feSpecularLightingElement.surfaceScale.baseVal = 'aString'", "'aString'");
+shouldBe("feSpecularLightingElement.surfaceScale.baseVal", "NaN");
+shouldBe("feSpecularLightingElement.surfaceScale.baseVal = 0", "0");
+shouldBe("feSpecularLightingElement.surfaceScale.baseVal = feSpecularLightingElement", "feSpecularLightingElement");
+shouldBe("feSpecularLightingElement.surfaceScale.baseVal", "NaN");
+shouldBe("feSpecularLightingElement.surfaceScale.baseVal = 300", "300");
 
 debug("");
 debug("Check that the surfaceScale value remained 300");
-shouldBe("feSpecularLightingElement.surfaceScale.baseVal = 300", "300");
+shouldBe("feSpecularLightingElement.surfaceScale.baseVal", "300");
 
 successfullyParsed = true;
diff --git a/LayoutTests/svg/dom/script-tests/SVGLength.js b/LayoutTests/svg/dom/script-tests/SVGLength.js
index 118dd74..bfd0f8c 100644
--- a/LayoutTests/svg/dom/script-tests/SVGLength.js
+++ b/LayoutTests/svg/dom/script-tests/SVGLength.js
@@ -37,10 +37,18 @@ debug("Check invalid arguments for 'newValueSpecifiedUnits'");
 shouldThrow("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_UNKNOWN, 4)");
 shouldThrow("length.newValueSpecifiedUnits(-1, 4)");
 shouldThrow("length.newValueSpecifiedUnits(11, 4)");
-shouldThrow("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 'aString')");
-shouldThrow("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, length)");
-shouldThrow("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, svgElement)");
+// ECMA-262, 9.3, "ToNumber"
+shouldBeUndefined("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 'aString')");
+shouldBe("length.value", "NaN");
+shouldBeUndefined("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 0)");
+shouldBeUndefined("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, length)");
+shouldBe("length.value", "NaN");
+shouldBeUndefined("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 0)");
+shouldBeUndefined("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, svgElement)");
+shouldBe("length.value", "NaN");
 shouldThrow("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX)");
+// Reset to original value above.
+length.valueAsString = "2px";
 shouldThrow("length.newValueSpecifiedUnits('aString', 4)");
 shouldThrow("length.newValueSpecifiedUnits(length, 4)");
 shouldThrow("length.newValueSpecifiedUnits(svgElement, 4)");
diff --git a/LayoutTests/svg/dom/script-tests/SVGMatrix.js b/LayoutTests/svg/dom/script-tests/SVGMatrix.js
index fdb6ba3..017ae5a 100644
--- a/LayoutTests/svg/dom/script-tests/SVGMatrix.js
+++ b/LayoutTests/svg/dom/script-tests/SVGMatrix.js
@@ -19,29 +19,71 @@ shouldBe("matrix.f = 200", "200");
 
 debug("");
 debug("Check assigning invalid matrices");
-shouldThrow("matrix.a = matrix");
-shouldThrow("matrix.a = svgElement");
-shouldThrow("matrix.a = 'aString'");
-
-shouldThrow("matrix.b = matrix");
-shouldThrow("matrix.b = svgElement");
-shouldThrow("matrix.b = 'aString'");
-
-shouldThrow("matrix.c = matrix");
-shouldThrow("matrix.c = svgElement");
-shouldThrow("matrix.c = 'aString'");
-
-shouldThrow("matrix.d = matrix");
-shouldThrow("matrix.d = svgElement");
-shouldThrow("matrix.d = 'aString'");
-
-shouldThrow("matrix.e = matrix");
-shouldThrow("matrix.e = svgElement");
-shouldThrow("matrix.e = 'aString'");
+shouldBe("matrix.a = matrix", "matrix");
+shouldBe("matrix.a", "NaN");
+shouldBe("matrix.a = 0", "0");
+shouldBe("matrix.a = svgElement", "svgElement");
+shouldBe("matrix.a", "NaN");
+shouldBe("matrix.a = 0", "0");
+shouldBe("matrix.a = 'aString'", "'aString'");
+shouldBe("matrix.a", "NaN");
+// Reset to previous value.
+shouldBe("matrix.a = 2", "2");
 
-shouldThrow("matrix.f = matrix");
-shouldThrow("matrix.f = svgElement");
-shouldThrow("matrix.f = 'aString'");
+shouldBe("matrix.b = matrix", "matrix");
+shouldBe("matrix.b", "NaN");
+shouldBe("matrix.b = 0", "0");
+shouldBe("matrix.b = svgElement", "svgElement");
+shouldBe("matrix.b", "NaN");
+shouldBe("matrix.b = 0", "0");
+shouldBe("matrix.b = 'aString'", "'aString'");
+shouldBe("matrix.b", "NaN");
+// Reset to previous value.
+shouldBe("matrix.b = 0", "0");
+
+shouldBe("matrix.c = matrix", "matrix");
+shouldBe("matrix.c", "NaN");
+shouldBe("matrix.c = 0", "0");
+shouldBe("matrix.c = svgElement", "svgElement");
+shouldBe("matrix.c", "NaN");
+shouldBe("matrix.c = 0", "0");
+shouldBe("matrix.c = 'aString'", "'aString'");
+shouldBe("matrix.c", "NaN");
+// Reset to previous value.
+shouldBe("matrix.c = 0", "0");
+
+shouldBe("matrix.d = matrix", "matrix");
+shouldBe("matrix.d", "NaN");
+shouldBe("matrix.d = 0", "0");
+shouldBe("matrix.d = svgElement", "svgElement");
+shouldBe("matrix.d", "NaN");
+shouldBe("matrix.d = 0", "0");
+shouldBe("matrix.d = 'aString'", "'aString'");
+shouldBe("matrix.d", "NaN");
+// Reset to previous value.
+shouldBe("matrix.d = 1", "1");
+
+shouldBe("matrix.e = matrix", "matrix");
+shouldBe("matrix.e", "NaN");
+shouldBe("matrix.e = 0", "0");
+shouldBe("matrix.e = svgElement", "svgElement");
+shouldBe("matrix.e", "NaN");
+shouldBe("matrix.e = 0", "0");
+shouldBe("matrix.e = 'aString'", "'aString'");
+shouldBe("matrix.e", "NaN");
+// Reset to previous value.
+shouldBe("matrix.e = 0", "0");
+
+shouldBe("matrix.f = matrix", "matrix");
+shouldBe("matrix.f", "NaN");
+shouldBe("matrix.f = 0", "0");
+shouldBe("matrix.f = svgElement", "svgElement");
+shouldBe("matrix.f", "NaN");
+shouldBe("matrix.f = 0", "0");
+shouldBe("matrix.f = 'aString'", "'aString'");
+shouldBe("matrix.f", "NaN");
+// Reset to previous value.
+shouldBe("matrix.f = 200", "200");
 
 debug("");
 debug("Check that the matrix is still containing the correct values");
@@ -77,18 +119,20 @@ shouldThrow("matrix.translate(true)");
 shouldThrow("matrix.translate(2)");
 shouldThrow("matrix.translate('aString')");
 shouldThrow("matrix.translate(svgElement)");
-shouldThrow("matrix.translate('aString', 'aString')");
-shouldThrow("matrix.translate(svgElement, svgElement)");
-shouldThrow("matrix.translate(2, 'aString')");
-shouldThrow("matrix.translate(2, svgElement)");
-shouldThrow("matrix.translate('aString', 2)");
-shouldThrow("matrix.translate(svgElement, 2)");
+// The following string and object arguments convert to NaN
+// per ECMA-262, 9.3, "ToNumber".
+shouldBeNonNull("matrix.translate('aString', 'aString')");
+shouldBeNonNull("matrix.translate(svgElement, svgElement)");
+shouldBeNonNull("matrix.translate(2, 'aString')");
+shouldBeNonNull("matrix.translate(2, svgElement)");
+shouldBeNonNull("matrix.translate('aString', 2)");
+shouldBeNonNull("matrix.translate(svgElement, 2)");
 
 debug("");
 debug("Check calling 'scale' with invalid arguments");
 shouldThrow("matrix.scale()");
-shouldThrow("matrix.scale('aString')");
-shouldThrow("matrix.scale(svgElement)");
+shouldBeNonNull("matrix.scale('aString')");
+shouldBeNonNull("matrix.scale(svgElement)");
 
 
 debug("");
@@ -98,18 +142,18 @@ shouldThrow("matrix.scaleNonUniform(true)");
 shouldThrow("matrix.scaleNonUniform(2)");
 shouldThrow("matrix.scaleNonUniform('aString')");
 shouldThrow("matrix.scaleNonUniform(svgElement)");
-shouldThrow("matrix.scaleNonUniform('aString', 'aString')");
-shouldThrow("matrix.scaleNonUniform(svgElement, svgElement)");
-shouldThrow("matrix.scaleNonUniform(2, 'aString')");
-shouldThrow("matrix.scaleNonUniform(2, svgElement)");
-shouldThrow("matrix.scaleNonUniform('aString', 2)");
-shouldThrow("matrix.scaleNonUniform(svgElement, 2)");
+shouldBeNonNull("matrix.scaleNonUniform('aString', 'aString')");
+shouldBeNonNull("matrix.scaleNonUniform(svgElement, svgElement)");
+shouldBeNonNull("matrix.scaleNonUniform(2, 'aString')");
+shouldBeNonNull("matrix.scaleNonUniform(2, svgElement)");
+shouldBeNonNull("matrix.scaleNonUniform('aString', 2)");
+shouldBeNonNull("matrix.scaleNonUniform(svgElement, 2)");
 
 debug("");
 debug("Check calling 'rotate' with invalid arguments");
 shouldThrow("matrix.rotate()");
-shouldThrow("matrix.rotate('aString')");
-shouldThrow("matrix.rotate(svgElement)");
+shouldBeNonNull("matrix.rotate('aString')");
+shouldBeNonNull("matrix.rotate(svgElement)");
 
 debug("");
 debug("Check calling 'rotateFromVector' with invalid arguments");
@@ -118,23 +162,23 @@ shouldThrow("matrix.rotateFromVector(true)");
 shouldThrow("matrix.rotateFromVector(2)");
 shouldThrow("matrix.rotateFromVector('aString')");
 shouldThrow("matrix.rotateFromVector(svgElement)");
-shouldThrow("matrix.rotateFromVector('aString', 'aString')");
-shouldThrow("matrix.rotateFromVector(svgElement, svgElement)");
-shouldThrow("matrix.rotateFromVector(2, 'aString')");
-shouldThrow("matrix.rotateFromVector(2, svgElement)");
-shouldThrow("matrix.rotateFromVector('aString', 2)");
-shouldThrow("matrix.rotateFromVector(svgElement, 2)");
+shouldBeNonNull("matrix.rotateFromVector('aString', 'aString')");
+shouldBeNonNull("matrix.rotateFromVector(svgElement, svgElement)");
+shouldBeNonNull("matrix.rotateFromVector(2, 'aString')");
+shouldBeNonNull("matrix.rotateFromVector(2, svgElement)");
+shouldBeNonNull("matrix.rotateFromVector('aString', 2)");
+shouldBeNonNull("matrix.rotateFromVector(svgElement, 2)");
 
 debug("");
 debug("Check calling 'skewX' with invalid arguments");
 shouldThrow("matrix.skewX()");
-shouldThrow("matrix.skewX('aString')");
-shouldThrow("matrix.skewX(svgElement)");
+shouldBeNonNull("matrix.skewX('aString')");
+shouldBeNonNull("matrix.skewX(svgElement)");
 
 debug("");
 debug("Check calling 'skewY' with invalid arguments");
 shouldThrow("matrix.skewY()");
-shouldThrow("matrix.skewY('aString')");
-shouldThrow("matrix.skewY(svgElement)");
+shouldBeNonNull("matrix.skewY('aString')");
+shouldBeNonNull("matrix.skewY(svgElement)");
 
 successfullyParsed = true;
diff --git a/LayoutTests/svg/dom/script-tests/SVGNumber.js b/LayoutTests/svg/dom/script-tests/SVGNumber.js
index 2a9883c..246c837 100644
--- a/LayoutTests/svg/dom/script-tests/SVGNumber.js
+++ b/LayoutTests/svg/dom/script-tests/SVGNumber.js
@@ -22,11 +22,11 @@ shouldBe("numRef", "1000");
 shouldBe("num.value", "-12345678");
 
 debug("");
-debug("Check assigning invalid number, number should be null afterwards");
-shouldThrow("num.value = num");
-shouldThrow("num.value = 'aString'");
-shouldThrow("num.value = svgElement");
-shouldBe("num.value", "-12345678");
+debug("Check assigning invalid number, number should be 0 afterwards");
+shouldBe("num.value = num", "num");
+shouldBe("num.value = 'aString'", "'aString'");
+shouldBe("num.value = svgElement", "svgElement");
+shouldBe("num.value", "NaN");
 shouldBeNull("num.value = null");
 
 debug("");
diff --git a/LayoutTests/svg/dom/script-tests/SVGPoint.js b/LayoutTests/svg/dom/script-tests/SVGPoint.js
index bcd78d2..a9e9c7e 100644
--- a/LayoutTests/svg/dom/script-tests/SVGPoint.js
+++ b/LayoutTests/svg/dom/script-tests/SVGPoint.js
@@ -15,12 +15,12 @@ shouldBe("point.y = 200", "200");
 
 debug("");
 debug("Check assigning invalid points");
-shouldThrow("point.x = point");
+shouldBe("point.x = point", "point");
 shouldBeNull("point.y = null");
 
 debug("");
-debug("Check that the point is still containing the correct values");
-shouldBe("point.x", "100");
+debug("Check that the point contains the correct values");
+shouldBe("point.x", "NaN");
 shouldBe("point.y", "0");
 
 debug("");
diff --git a/LayoutTests/svg/dom/script-tests/SVGPreserveAspectRatio.js b/LayoutTests/svg/dom/script-tests/SVGPreserveAspectRatio.js
index 3c9ad2a..43fd1c4 100644
--- a/LayoutTests/svg/dom/script-tests/SVGPreserveAspectRatio.js
+++ b/LayoutTests/svg/dom/script-tests/SVGPreserveAspectRatio.js
@@ -15,6 +15,10 @@ shouldBe("preserveAspectRatio.meetOrSlice = SVGPreserveAspectRatio.SVG_MEETORSLI
 
 debug("");
 debug("Check assigning invalid align values");
+// The following four assignments fail because the various arguments
+// translate via ECMA-262 rules to 0, which is the same as
+// SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_UNKNOWN and which is
+// not allowed.
 shouldThrow("preserveAspectRatio.align = preserveAspectRatio");
 shouldThrow("preserveAspectRatio.align = null");
 shouldThrow("preserveAspectRatio.align = 'aString'");
@@ -25,6 +29,10 @@ shouldThrow("preserveAspectRatio.align = 11"); // SVG_PRESERVEASPECTRATIO_XMAXYM
 
 debug("");
 debug("Check assigning invalid meetOrSlice values");
+// The following four assignments fail because the various arguments
+// translate via ECMA-262 rules to 0, which is the same as
+// SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_UNKNOWN and which is
+// not allowed.
 shouldThrow("preserveAspectRatio.meetOrSlice = preserveAspectRatio");
 shouldThrow("preserveAspectRatio.meetOrSlice = null");
 shouldThrow("preserveAspectRatio.meetOrSlice = 'aString'");
diff --git a/LayoutTests/svg/dom/script-tests/SVGRect.js b/LayoutTests/svg/dom/script-tests/SVGRect.js
index 511e308..0a80773 100644
--- a/LayoutTests/svg/dom/script-tests/SVGRect.js
+++ b/LayoutTests/svg/dom/script-tests/SVGRect.js
@@ -16,19 +16,24 @@ shouldBe("rect.x = 100", "100");
 shouldBe("rect.y = 200", "200");
 shouldBe("rect.width = 300", "300");
 shouldBe("rect.height = 400", "400");
+debug("Check that the rect contains the correct values");
+shouldBe("rect.x", "100");
+shouldBe("rect.y", "200");
+shouldBe("rect.width", "300");
+shouldBe("rect.height", "400");
 
 debug("");
 debug("Check assigning invalid rects");
-shouldThrow("rect.x = rect");
+shouldBe("rect.x = rect", "rect");
 shouldBeNull("rect.y = null");
-shouldThrow("rect.width = 'aString'");
-shouldThrow("rect.height = svgElement");
+shouldBe("rect.width = 'aString'", "'aString'");
+shouldBe("rect.height = svgElement", "svgElement");
 
 debug("");
-debug("Check that the rect is still containing the correct values");
-shouldBe("rect.x", "100");
+debug("Check that the rect contains the correct values");
+shouldBe("rect.x", "NaN");
 shouldBe("rect.y", "0");
-shouldBe("rect.width", "300");
-shouldBe("rect.height", "400");
+shouldBe("rect.width", "NaN");
+shouldBe("rect.height", "NaN");
 
 successfullyParsed = true;
diff --git a/LayoutTests/svg/dom/script-tests/SVGTransform.js b/LayoutTests/svg/dom/script-tests/SVGTransform.js
index 65a587c..18c4b5f 100644
--- a/LayoutTests/svg/dom/script-tests/SVGTransform.js
+++ b/LayoutTests/svg/dom/script-tests/SVGTransform.js
@@ -66,15 +66,15 @@ shouldThrow("transform.setTranslate()");
 shouldThrow("transform.setTranslate(transform)");
 shouldThrow("transform.setTranslate(svgElement)");
 shouldThrow("transform.setTranslate('aString')");
-shouldThrow("transform.setTranslate(1, transform)");
-shouldThrow("transform.setTranslate(1, svgElement)");
-shouldThrow("transform.setTranslate(1, 'aString')");
-shouldThrow("transform.setTranslate(transform, 1)");
-shouldThrow("transform.setTranslate(svgElement, 1)");
-shouldThrow("transform.setTranslate('aString', 1)");
-shouldThrow("transform.setTranslate(transform, transform)");
-shouldThrow("transform.setTranslate(svgElement, svgElement)");
-shouldThrow("transform.setTranslate('aString', 'aString')");
+shouldBeUndefined("transform.setTranslate(1, transform)");
+shouldBeUndefined("transform.setTranslate(1, svgElement)");
+shouldBeUndefined("transform.setTranslate(1, 'aString')");
+shouldBeUndefined("transform.setTranslate(transform, 1)");
+shouldBeUndefined("transform.setTranslate(svgElement, 1)");
+shouldBeUndefined("transform.setTranslate('aString', 1)");
+shouldBeUndefined("transform.setTranslate(transform, transform)");
+shouldBeUndefined("transform.setTranslate(svgElement, svgElement)");
+shouldBeUndefined("transform.setTranslate('aString', 'aString')");
 
 debug("");
 debug("Check passing invalid arguments to 'setScale'");
@@ -82,15 +82,15 @@ shouldThrow("transform.setScale()");
 shouldThrow("transform.setScale(transform)");
 shouldThrow("transform.setScale(svgElement)");
 shouldThrow("transform.setScale('aString')");
-shouldThrow("transform.setScale(1, transform)");
-shouldThrow("transform.setScale(1, svgElement)");
-shouldThrow("transform.setScale(1, 'aString')");
-shouldThrow("transform.setScale(transform, 1)");
-shouldThrow("transform.setScale(svgElement, 1)");
-shouldThrow("transform.setScale('aString', 1)");
-shouldThrow("transform.setScale(transform, transform)");
-shouldThrow("transform.setScale(svgElement, svgElement)");
-shouldThrow("transform.setScale('aString', 'aString')");
+shouldBeUndefined("transform.setScale(1, transform)");
+shouldBeUndefined("transform.setScale(1, svgElement)");
+shouldBeUndefined("transform.setScale(1, 'aString')");
+shouldBeUndefined("transform.setScale(transform, 1)");
+shouldBeUndefined("transform.setScale(svgElement, 1)");
+shouldBeUndefined("transform.setScale('aString', 1)");
+shouldBeUndefined("transform.setScale(transform, transform)");
+shouldBeUndefined("transform.setScale(svgElement, svgElement)");
+shouldBeUndefined("transform.setScale('aString', 'aString')");
 
 debug("");
 debug("Check passing invalid arguments to 'setRotate'");
@@ -101,22 +101,22 @@ shouldThrow("transform.setRotate('aString')");
 shouldThrow("transform.setRotate(1, transform)");
 shouldThrow("transform.setRotate(1, svgElement)");
 shouldThrow("transform.setRotate(1, 'aString')");
-shouldThrow("transform.setRotate(1, 1, transform)");
-shouldThrow("transform.setRotate(1, 1, svgElement)");
-shouldThrow("transform.setRotate(1, 1, 'aString')");
+shouldBeUndefined("transform.setRotate(1, 1, transform)");
+shouldBeUndefined("transform.setRotate(1, 1, svgElement)");
+shouldBeUndefined("transform.setRotate(1, 1, 'aString')");
 
 debug("");
 debug("Check passing invalid arguments to 'setSkewX'");
 shouldThrow("transform.setSkewX()");
-shouldThrow("transform.setSkewX(transform)");
-shouldThrow("transform.setSkewX(svgElement)");
-shouldThrow("transform.setSkewX('aString')");
+shouldBeUndefined("transform.setSkewX(transform)");
+shouldBeUndefined("transform.setSkewX(svgElement)");
+shouldBeUndefined("transform.setSkewX('aString')");
 
 debug("");
 debug("Check passing invalid arguments to 'setSkewY'");
 shouldThrow("transform.setSkewY()");
-shouldThrow("transform.setSkewY(transform)");
-shouldThrow("transform.setSkewY(svgElement)");
-shouldThrow("transform.setSkewY('aString')");
+shouldBeUndefined("transform.setSkewY(transform)");
+shouldBeUndefined("transform.setSkewY(svgElement)");
+shouldBeUndefined("transform.setSkewY('aString')");
 
 successfullyParsed = true;
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 552f6bd..edfca0c 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,39 @@
+2010-11-16  Kenneth Russell  <kbr at google.com>
+
+        Reviewed by Dimitri Glazkov.
+
+        WebIDL conversions from string to number and array to number should not generate TypeError
+        https://bugs.webkit.org/show_bug.cgi?id=49218
+
+        Recent SVG-related changes to the StrictTypeChecking extended attribute in
+        CodeGeneratorJS.pm and CodeGeneratorV8.pm were not correct according to the Web IDL and
+        ECMA-262 specifications. In particular, when an attribute or function argument is specified
+        as a number type (floating-point or integer), passing in a String or object is not supposed
+        to raise an exception.
+
+        The original intent of the StrictTypeChecking extended attribute was to properly raise
+        TypeError when an interface type is required, but the supplied object does not implement the
+        interface type (http://dev.w3.org/2006/webapi/WebIDL/#es-interface). Historically WebKit has
+        silently passed null to the C++ bindings in this case. The handling of strings in the
+        original StrictTypeChecking implementation was also incorrect, raising exceptions when it
+        should not.
+
+        The semantics of StrictTypeChecking have been changed to enforce only the restrictions on
+        interface types. The V8 custom bindings for WebGL have been updated to match the behavior of
+        the autogenerated code.
+
+        Test: fast/canvas/webgl/type-conversion-test.html
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        * bindings/scripts/CodeGeneratorV8.pm:
+        * bindings/v8/custom/V8WebGLRenderingContextCustom.cpp:
+        (WebCore::getObjectParameter):
+        (WebCore::V8WebGLRenderingContext::getFramebufferAttachmentParameterCallback):
+        (WebCore::V8WebGLRenderingContext::getParameterCallback):
+        (WebCore::V8WebGLRenderingContext::getProgramParameterCallback):
+        (WebCore::V8WebGLRenderingContext::getShaderParameterCallback):
+        (WebCore::vertexAttribAndUniformHelperf):
+
 2010-11-16  Alexey Proskuryakov  <ap at apple.com>
 
         Windows build fix.
diff --git a/WebCore/bindings/scripts/CodeGeneratorJS.pm b/WebCore/bindings/scripts/CodeGeneratorJS.pm
index 0e8b424..ea32615 100644
--- a/WebCore/bindings/scripts/CodeGeneratorJS.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorJS.pm
@@ -1751,8 +1751,11 @@ sub GenerateImplementation
                             push(@implContent, "    $implType* imp = static_cast<$implType*>(castedThis->impl());\n");
                             push(@implContent, "    ExceptionCode ec = 0;\n") if @{$attribute->setterExceptions};
 
-                            # For setters with "StrictTypeChecking", if an input parameter's type does not match the signature,
-                            # a TypeError is thrown instead of casting to null.
+                            # If the "StrictTypeChecking" extended attribute is present, and the attribute's type is an
+                            # interface type, then if the incoming value does not implement that interface, a TypeError
+                            # is thrown rather than silently passing NULL to the C++ code.
+                            # Per the Web IDL and ECMAScript specifications, incoming values can always be converted to
+                            # both strings and numbers, so do not throw TypeError if the attribute is of these types.
                             if ($attribute->signature->extendedAttributes->{"StrictTypeChecking"}) {
                                 $implIncludes{"<runtime/Error.h>"} = 1;
 
@@ -1762,21 +1765,6 @@ sub GenerateImplementation
                                     push(@implContent, "        throwVMTypeError(exec);\n");
                                     push(@implContent, "        return;\n");
                                     push(@implContent, "    };\n");
-                                } elsif ($codeGenerator->IsStringType($argType)) {
-                                    push(@implContent, "    if (!value.isUndefinedOrNull() && !value.isString() && !value.isObject()) {\n");
-                                    push(@implContent, "        throwVMTypeError(exec);\n");
-                                    push(@implContent, "        return;\n");
-                                    push(@implContent, "    };\n");
-                                } elsif ($codeGenerator->IsNumericType($argType)) {
-                                    push(@implContent, "    if (!value.isUndefinedOrNull() && !value.isNumber() && !value.isBoolean()) {\n");
-                                    push(@implContent, "        throwVMTypeError(exec);\n");
-                                    push(@implContent, "        return;\n");
-                                    push(@implContent, "    };\n");
-                                } elsif ($argType eq "boolean") {
-                                    push(@implContent, "    if (!value.isUndefinedOrNull() && !value.isBoolean()) {\n");
-                                    push(@implContent, "        throwVMTypeError(exec);\n");
-                                    push(@implContent, "        return;\n");
-                                    push(@implContent, "    };\n");
                                 }
                             }
 
@@ -2006,8 +1994,11 @@ sub GenerateImplementation
                                 push(@implContent, "    RefPtr<$argType> $name = ${callbackClassName}::create(asObject(exec->argument($argsIndex)), castedThis->globalObject());\n");
                             }
                         } else {
-                            # For functions with "StrictTypeChecking", if an input parameter's type does not match the signature,
-                            # a TypeError is thrown instead of casting to null.
+                            # If the "StrictTypeChecking" extended attribute is present, and the argument's type is an
+                            # interface type, then if the incoming value does not implement that interface, a TypeError
+                            # is thrown rather than silently passing NULL to the C++ code.
+                            # Per the Web IDL and ECMAScript semantics, incoming values can always be converted to both
+                            # strings and numbers, so do not throw TypeError if the argument is of these types.
                             if ($function->signature->extendedAttributes->{"StrictTypeChecking"}) {
                                 $implIncludes{"<runtime/Error.h>"} = 1;
 
@@ -2015,12 +2006,6 @@ sub GenerateImplementation
                                 if (!IsNativeType($argType)) {
                                     push(@implContent, "    if (exec->argumentCount() > $argsIndex && !${argValue}.isUndefinedOrNull() && !${argValue}.inherits(&JS${argType}::s_info))\n");
                                     push(@implContent, "        return throwVMTypeError(exec);\n");
-                                } elsif ($codeGenerator->IsStringType($argType)) {
-                                    push(@implContent, "    if (exec->argumentCount() > $argsIndex && !${argValue}.isUndefinedOrNull() && !${argValue}.isString() && !${argValue}.isObject())\n");
-                                    push(@implContent, "        return throwVMTypeError(exec);\n");
-                                } elsif ($codeGenerator->IsNumericType($argType)) {
-                                    push(@implContent, "    if (exec->argumentCount() > $argsIndex && !${argValue}.isUndefinedOrNull() && !${argValue}.isNumber() && !${argValue}.isBoolean())\n");
-                                    push(@implContent, "        return throwVMTypeError(exec);\n");
                                 }
                             }
 
diff --git a/WebCore/bindings/scripts/CodeGeneratorV8.pm b/WebCore/bindings/scripts/CodeGeneratorV8.pm
index 27404b8..26c1dc7 100644
--- a/WebCore/bindings/scripts/CodeGeneratorV8.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorV8.pm
@@ -909,8 +909,11 @@ sub GenerateNormalAttrSetter
     push(@implContentDecls, "static void ${attrName}AttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)\n{\n");
     push(@implContentDecls, "    INC_STATS(\"DOM.$implClassName.$attrName._set\");\n");
 
-    # For functions with "StrictTypeChecking", if an input parameter's type does not match the signature,
-    # a TypeError is thrown instead of casting to null.
+    # If the "StrictTypeChecking" extended attribute is present, and the attribute's type is an
+    # interface type, then if the incoming value does not implement that interface, a TypeError is
+    # thrown rather than silently passing NULL to the C++ code.
+    # Per the Web IDL and ECMAScript specifications, incoming values can always be converted to both
+    # strings and numbers, so do not throw TypeError if the attribute is of these types.
     if ($attribute->signature->extendedAttributes->{"StrictTypeChecking"}) {
         my $argType = GetTypeFromSignature($attribute->signature);
         if (IsWrapperType($argType)) {
@@ -918,21 +921,6 @@ sub GenerateNormalAttrSetter
             push(@implContentDecls, "        V8Proxy::throwTypeError();\n");
             push(@implContentDecls, "        return;\n");
             push(@implContentDecls, "    }\n");
-        } elsif ($codeGenerator->IsStringType($argType)) {
-            push(@implContentDecls, "    if (!isUndefinedOrNull(value) && !value->IsString() && !value->IsObject()) {\n");
-            push(@implContentDecls, "        V8Proxy::throwTypeError();\n");
-            push(@implContentDecls, "        return;\n");
-            push(@implContentDecls, "    }\n");
-        } elsif ($codeGenerator->IsNumericType($argType)) {
-            push(@implContentDecls, "    if (!isUndefinedOrNull(value) && !value->IsNumber() && !value->IsBoolean()) {\n");
-            push(@implContentDecls, "        V8Proxy::throwTypeError();\n");
-            push(@implContentDecls, "        return;\n");
-            push(@implContentDecls, "    }\n");
-        } elsif ($argType eq "boolean") {
-            push(@implContentDecls, "    if (!isUndefinedOrNull(value) && !value->IsBoolean()) {\n");
-            push(@implContentDecls, "        V8Proxy::throwTypeError();\n");
-            push(@implContentDecls, "        return;\n");
-            push(@implContentDecls, "    }\n");
         }
     }
 
@@ -1359,8 +1347,12 @@ END
             push(@implContentDecls, "    " . ConvertToV8Parameter($parameter, $nativeType, $parameterName, $value) . "\n");
         } else {
             $implIncludes{"V8BindingMacros.h"} = 1;
-            # For functions with "StrictTypeChecking", if an input parameter's type does not match the signature,
-            # a TypeError is thrown instead of casting to null.
+            # If the "StrictTypeChecking" extended attribute is present, and the argument's type is an
+            # interface type, then if the incoming value does not implement that interface, a TypeError
+            # is thrown rather than silently passing NULL to the C++ code.
+            # Per the Web IDL and ECMAScript specifications, incoming values can always be converted
+            # to both strings and numbers, so do not throw TypeError if the argument is of these
+            # types.
             if ($function->signature->extendedAttributes->{"StrictTypeChecking"}) {
                 my $argValue = "args[$paramIndex]";
                 my $argType = GetTypeFromSignature($parameter);
@@ -1369,16 +1361,6 @@ END
                     push(@implContentDecls, "        V8Proxy::throwTypeError();\n");
                     push(@implContentDecls, "        return notHandledByInterceptor();\n");
                     push(@implContentDecls, "    }\n");
-                } elsif ($codeGenerator->IsStringType($argType)) {
-                    push(@implContentDecls, "    if (args.Length() > $paramIndex && !isUndefinedOrNull($argValue) && !${argValue}->IsString() && !${argValue}->IsObject()) {\n");
-                    push(@implContentDecls, "        V8Proxy::throwTypeError();\n");
-                    push(@implContentDecls, "        return notHandledByInterceptor();\n");
-                    push(@implContentDecls, "    }\n");
-                } elsif ($codeGenerator->IsNumericType($argType)) {
-                    push(@implContentDecls, "    if (args.Length() > $paramIndex && !isUndefinedOrNull($argValue) && !${argValue}->IsNumber() && !${argValue}->IsBoolean()) {\n");
-                    push(@implContentDecls, "        V8Proxy::throwTypeError();\n");
-                    push(@implContentDecls, "        return notHandledByInterceptor();\n");
-                    push(@implContentDecls, "    }\n");
                 }
             }
             push(@implContentDecls, "    EXCEPTION_BLOCK($nativeType, $parameterName, " .
diff --git a/WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp b/WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp
index b2240ed..445a76d 100644
--- a/WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp
@@ -164,17 +164,8 @@ static v8::Handle<v8::Value> getObjectParameter(const v8::Arguments& args, Objec
 
     ExceptionCode ec = 0;
     WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(args.Holder());
-    bool ok;
-    unsigned target = toInt32(args[0], ok);
-    if (!ok) {
-        V8Proxy::setDOMException(SYNTAX_ERR);
-        return notHandledByInterceptor();
-    }
-    unsigned pname = toInt32(args[1], ok);
-    if (!ok) {
-        V8Proxy::setDOMException(SYNTAX_ERR);
-        return notHandledByInterceptor();
-    }
+    unsigned target = toInt32(args[0]);
+    unsigned pname = toInt32(args[1]);
     WebGLGetInfo info;
     switch (objectType) {
     case kBuffer:
@@ -263,22 +254,9 @@ v8::Handle<v8::Value> V8WebGLRenderingContext::getFramebufferAttachmentParameter
 
     ExceptionCode ec = 0;
     WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(args.Holder());
-    bool ok;
-    unsigned target = toInt32(args[0], ok);
-    if (!ok) {
-        V8Proxy::setDOMException(SYNTAX_ERR);
-        return notHandledByInterceptor();
-    }
-    unsigned attachment = toInt32(args[1], ok);
-    if (!ok) {
-        V8Proxy::setDOMException(SYNTAX_ERR);
-        return notHandledByInterceptor();
-    }
-    unsigned pname = toInt32(args[2], ok);
-    if (!ok) {
-        V8Proxy::setDOMException(SYNTAX_ERR);
-        return notHandledByInterceptor();
-    }
+    unsigned target = toInt32(args[0]);
+    unsigned attachment = toInt32(args[1]);
+    unsigned pname = toInt32(args[2]);
     WebGLGetInfo info = context->getFramebufferAttachmentParameter(target, attachment, pname, ec);
     if (ec) {
         V8Proxy::setDOMException(ec);
@@ -298,12 +276,7 @@ v8::Handle<v8::Value> V8WebGLRenderingContext::getParameterCallback(const v8::Ar
 
     ExceptionCode ec = 0;
     WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(args.Holder());
-    bool ok;
-    unsigned pname = toInt32(args[0], ok);
-    if (!ok) {
-        V8Proxy::setDOMException(SYNTAX_ERR);
-        return notHandledByInterceptor();
-    }
+    unsigned pname = toInt32(args[0]);
     WebGLGetInfo info = context->getParameter(pname, ec);
     if (ec) {
         V8Proxy::setDOMException(ec);
@@ -328,12 +301,7 @@ v8::Handle<v8::Value> V8WebGLRenderingContext::getProgramParameterCallback(const
         return notHandledByInterceptor();
     }
     WebGLProgram* program = V8WebGLProgram::HasInstance(args[0]) ? V8WebGLProgram::toNative(v8::Handle<v8::Object>::Cast(args[0])) : 0;
-    bool ok;
-    unsigned pname = toInt32(args[1], ok);
-    if (!ok) {
-        V8Proxy::setDOMException(SYNTAX_ERR);
-        return notHandledByInterceptor();
-    }
+    unsigned pname = toInt32(args[1]);
     WebGLGetInfo info = context->getProgramParameter(program, pname, ec);
     if (ec) {
         V8Proxy::setDOMException(ec);
@@ -364,12 +332,7 @@ v8::Handle<v8::Value> V8WebGLRenderingContext::getShaderParameterCallback(const
         return notHandledByInterceptor();
     }
     WebGLShader* shader = V8WebGLShader::HasInstance(args[0]) ? V8WebGLShader::toNative(v8::Handle<v8::Object>::Cast(args[0])) : 0;
-    bool ok;
-    unsigned pname = toInt32(args[1], ok);
-    if (!ok) {
-        V8Proxy::setDOMException(SYNTAX_ERR);
-        return notHandledByInterceptor();
-    }
+    unsigned pname = toInt32(args[1]);
     WebGLGetInfo info = context->getShaderParameter(shader, pname, ec);
     if (ec) {
         V8Proxy::setDOMException(ec);
@@ -471,7 +434,7 @@ static v8::Handle<v8::Value> vertexAttribAndUniformHelperf(const v8::Arguments&
     WebGLUniformLocation* location = 0;
 
     if (isFunctionToCallForAttribute(functionToCall))
-        index = toInt32(args[0], ok);
+        index = toInt32(args[0]);
     else {
         if (args.Length() > 0 && !isUndefinedOrNull(args[0]) && !V8WebGLUniformLocation::HasInstance(args[0])) {
             V8Proxy::throwTypeError();

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list