Backed out bug 679864 because of mochitest-1 oranges
authorEhsan Akhgari <ehsan@mozilla.com>
Fri, 19 Aug 2011 14:22:52 -0400
changeset 75539 64a6b17da6e7a12ec7542715af19840c69b57969
parent 75535 5c5eac0d8a45931279f952008e0546cf52e024f7
child 75540 ce42b01e7f9578eec9b796922eda930557937570
push id122
push usertim.taubert@gmx.de
push dateSat, 20 Aug 2011 09:36:23 +0000
treeherderfx-team@b2617200c0dd [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs679864
milestone9.0a1
Backed out bug 679864 because of mochitest-1 oranges
content/canvas/test/webgl/00_test_list.txt
content/canvas/test/webgl/README.mozilla
content/canvas/test/webgl/conformance/00_test_list.txt
content/canvas/test/webgl/conformance/array-buffer-crash.html
content/canvas/test/webgl/conformance/array-buffer-view-crash.html
content/canvas/test/webgl/conformance/array-unit-tests.html
content/canvas/test/webgl/conformance/bad-arguments-test.html
content/canvas/test/webgl/conformance/buffer-bind-test.html
content/canvas/test/webgl/conformance/buffer-data-array-buffer.html
content/canvas/test/webgl/conformance/buffer-offscreen-test.html
content/canvas/test/webgl/conformance/buffer-preserve-test.html
content/canvas/test/webgl/conformance/canvas-test.html
content/canvas/test/webgl/conformance/canvas-zero-size.html
content/canvas/test/webgl/conformance/constants.html
content/canvas/test/webgl/conformance/context-attributes-alpha-depth-stencil-antialias.html
content/canvas/test/webgl/conformance/context-lost-restored.html
content/canvas/test/webgl/conformance/context-lost.html
content/canvas/test/webgl/conformance/context-type-test.html
content/canvas/test/webgl/conformance/copy-tex-image-and-sub-image-2d.html
content/canvas/test/webgl/conformance/draw-arrays-out-of-bounds.html
content/canvas/test/webgl/conformance/draw-elements-out-of-bounds.html
content/canvas/test/webgl/conformance/drawingbuffer-static-canvas-test.html
content/canvas/test/webgl/conformance/drawingbuffer-test.html
content/canvas/test/webgl/conformance/error-reporting.html
content/canvas/test/webgl/conformance/framebuffer-object-attachment.html
content/canvas/test/webgl/conformance/framebuffer-test.html
content/canvas/test/webgl/conformance/get-active-test.html
content/canvas/test/webgl/conformance/gl-bind-attrib-location-test.html
content/canvas/test/webgl/conformance/gl-clear.html
content/canvas/test/webgl/conformance/gl-drawelements.html
content/canvas/test/webgl/conformance/gl-enable-enum-test.html
content/canvas/test/webgl/conformance/gl-enable-vertex-attrib.html
content/canvas/test/webgl/conformance/gl-enum-tests.html
content/canvas/test/webgl/conformance/gl-fragcoord.html
content/canvas/test/webgl/conformance/gl-get-active-attribute.html
content/canvas/test/webgl/conformance/gl-get-active-uniform.html
content/canvas/test/webgl/conformance/gl-get-calls.html
content/canvas/test/webgl/conformance/gl-geterror.html
content/canvas/test/webgl/conformance/gl-getshadersource.html
content/canvas/test/webgl/conformance/gl-getstring.html
content/canvas/test/webgl/conformance/gl-min-attribs.html
content/canvas/test/webgl/conformance/gl-min-textures-unroll.html
content/canvas/test/webgl/conformance/gl-min-textures.html
content/canvas/test/webgl/conformance/gl-min-uniforms.html
content/canvas/test/webgl/conformance/gl-object-get-calls.html
content/canvas/test/webgl/conformance/gl-pixelstorei.html
content/canvas/test/webgl/conformance/gl-scissor-test.html
content/canvas/test/webgl/conformance/gl-shader-test.html
content/canvas/test/webgl/conformance/gl-teximage.html
content/canvas/test/webgl/conformance/gl-uniform-arrays.html
content/canvas/test/webgl/conformance/gl-uniform-bool.html
content/canvas/test/webgl/conformance/gl-uniformmatrix4fv.html
content/canvas/test/webgl/conformance/gl-unknown-uniform.html
content/canvas/test/webgl/conformance/gl-vertex-attrib-zero-issues.html
content/canvas/test/webgl/conformance/gl-vertex-attrib.html
content/canvas/test/webgl/conformance/gl-vertexattribpointer-offsets.html
content/canvas/test/webgl/conformance/gl-vertexattribpointer.html
content/canvas/test/webgl/conformance/glsl-2types-of-textures-on-same-unit.html
content/canvas/test/webgl/conformance/glsl-conformance.html
content/canvas/test/webgl/conformance/glsl-features.html
content/canvas/test/webgl/conformance/glsl-long-variable-names.html
content/canvas/test/webgl/conformance/incorrect-context-object-behaviour.html
content/canvas/test/webgl/conformance/index-validation-copies-indices.html
content/canvas/test/webgl/conformance/index-validation-crash-with-buffer-sub-data.html
content/canvas/test/webgl/conformance/index-validation-verifies-too-many-indices.html
content/canvas/test/webgl/conformance/index-validation-with-resized-buffer.html
content/canvas/test/webgl/conformance/index-validation.html
content/canvas/test/webgl/conformance/instanceof-test.html
content/canvas/test/webgl/conformance/invalid-UTF-16.html
content/canvas/test/webgl/conformance/invalid-passed-params.html
content/canvas/test/webgl/conformance/is-object.html
content/canvas/test/webgl/conformance/methods.html
content/canvas/test/webgl/conformance/more-than-65536-points.html
content/canvas/test/webgl/conformance/more/00_test_list.txt
content/canvas/test/webgl/conformance/more/all_tests.html
content/canvas/test/webgl/conformance/more/all_tests_linkonly.html
content/canvas/test/webgl/conformance/more/all_tests_sequential.html
content/canvas/test/webgl/conformance/more/conformance/badArgsArityLessThanArgc.html
content/canvas/test/webgl/conformance/more/conformance/constants.html
content/canvas/test/webgl/conformance/more/conformance/fuzzTheAPI.html
content/canvas/test/webgl/conformance/more/conformance/getContext.html
content/canvas/test/webgl/conformance/more/conformance/methods.html
content/canvas/test/webgl/conformance/more/conformance/quickCheckAPI.html
content/canvas/test/webgl/conformance/more/conformance/quickCheckAPIBadArgs.html
content/canvas/test/webgl/conformance/more/conformance/webGLArrays.html
content/canvas/test/webgl/conformance/more/demos/opengl_web.html
content/canvas/test/webgl/conformance/more/demos/video.html
content/canvas/test/webgl/conformance/more/functions/bindBuffer.html
content/canvas/test/webgl/conformance/more/functions/bindBufferBadArgs.html
content/canvas/test/webgl/conformance/more/functions/bindFramebufferLeaveNonZero.html
content/canvas/test/webgl/conformance/more/functions/bufferData.html
content/canvas/test/webgl/conformance/more/functions/bufferDataBadArgs.html
content/canvas/test/webgl/conformance/more/functions/bufferSubData.html
content/canvas/test/webgl/conformance/more/functions/bufferSubDataBadArgs.html
content/canvas/test/webgl/conformance/more/functions/copyTexImage2D.html
content/canvas/test/webgl/conformance/more/functions/copyTexImage2DBadArgs.html
content/canvas/test/webgl/conformance/more/functions/copyTexSubImage2D.html
content/canvas/test/webgl/conformance/more/functions/copyTexSubImage2DBadArgs.html
content/canvas/test/webgl/conformance/more/functions/deleteBufferBadArgs.html
content/canvas/test/webgl/conformance/more/functions/drawArrays.html
content/canvas/test/webgl/conformance/more/functions/drawArraysOutOfBounds.html
content/canvas/test/webgl/conformance/more/functions/drawElements.html
content/canvas/test/webgl/conformance/more/functions/drawElementsBadArgs.html
content/canvas/test/webgl/conformance/more/functions/isTests.html
content/canvas/test/webgl/conformance/more/functions/readPixels.html
content/canvas/test/webgl/conformance/more/functions/readPixelsBadArgs.html
content/canvas/test/webgl/conformance/more/functions/texImage2D.html
content/canvas/test/webgl/conformance/more/functions/texImage2DBadArgs.html
content/canvas/test/webgl/conformance/more/functions/texImage2DHTML.html
content/canvas/test/webgl/conformance/more/functions/texImage2DHTMLBadArgs.html
content/canvas/test/webgl/conformance/more/functions/texSubImage2D.html
content/canvas/test/webgl/conformance/more/functions/texSubImage2DBadArgs.html
content/canvas/test/webgl/conformance/more/functions/texSubImage2DHTML.html
content/canvas/test/webgl/conformance/more/functions/texSubImage2DHTMLBadArgs.html
content/canvas/test/webgl/conformance/more/functions/uniformMatrix.html
content/canvas/test/webgl/conformance/more/functions/uniformMatrixBadArgs.html
content/canvas/test/webgl/conformance/more/functions/uniformf.html
content/canvas/test/webgl/conformance/more/functions/uniformfArrayLen1.html
content/canvas/test/webgl/conformance/more/functions/uniformfBadArgs.html
content/canvas/test/webgl/conformance/more/functions/uniformi.html
content/canvas/test/webgl/conformance/more/functions/uniformiBadArgs.html
content/canvas/test/webgl/conformance/more/functions/vertexAttrib.html
content/canvas/test/webgl/conformance/more/functions/vertexAttribBadArgs.html
content/canvas/test/webgl/conformance/more/functions/vertexAttribPointer.html
content/canvas/test/webgl/conformance/more/functions/vertexAttribPointerBadArgs.html
content/canvas/test/webgl/conformance/more/glsl/arrayOutOfBounds.html
content/canvas/test/webgl/conformance/more/glsl/longLoops.html
content/canvas/test/webgl/conformance/more/glsl/uniformOutOfBounds.html
content/canvas/test/webgl/conformance/more/glsl/unusedAttribsUniforms.html
content/canvas/test/webgl/conformance/more/index.html
content/canvas/test/webgl/conformance/more/performance/CPUvsGPU.html
content/canvas/test/webgl/conformance/more/performance/bandwidth.html
content/canvas/test/webgl/conformance/more/performance/jsGCPause.html
content/canvas/test/webgl/conformance/more/performance/jsMatrixMult.html
content/canvas/test/webgl/conformance/more/performance/jsToGLOverhead.html
content/canvas/test/webgl/conformance/more/unit.js
content/canvas/test/webgl/conformance/more/util.js
content/canvas/test/webgl/conformance/null-object-behaviour.html
content/canvas/test/webgl/conformance/null-uniform-location.html
content/canvas/test/webgl/conformance/object-deletion-behaviour.html
content/canvas/test/webgl/conformance/oes-standard-derivatives.html
content/canvas/test/webgl/conformance/oes-texture-float.html
content/canvas/test/webgl/conformance/oes-vertex-array-object.html
content/canvas/test/webgl/conformance/origin-clean-conformance.html
content/canvas/test/webgl/conformance/point-size.html
content/canvas/test/webgl/conformance/premultiplyalpha-test.html
content/canvas/test/webgl/conformance/program-test.html
content/canvas/test/webgl/conformance/read-pixels-pack-alignment.html
content/canvas/test/webgl/conformance/read-pixels-test.html
content/canvas/test/webgl/conformance/renderbuffer-initialization.html
content/canvas/test/webgl/conformance/resource-sharing-test.html
content/canvas/test/webgl/conformance/resources/fragmentShader.frag
content/canvas/test/webgl/conformance/resources/npot-video.mp4
content/canvas/test/webgl/conformance/resources/npot-video.theora.ogv
content/canvas/test/webgl/conformance/resources/npot-video.webmvp8.webm
content/canvas/test/webgl/conformance/resources/vertexShader.vert
content/canvas/test/webgl/conformance/resources/webgl-test-utils.js
content/canvas/test/webgl/conformance/resources/webgl-test.js
content/canvas/test/webgl/conformance/shaders/00_test_list.txt
content/canvas/test/webgl/conformance/shaders/glsl-features/00_test_list.txt
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec2-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec2-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec2.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec2.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec3-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec3-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec3.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec3.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec4-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec4-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec4.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/abs-vec4.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/abs.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/abs.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/base.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/base.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec2-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec2-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec2.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec2.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec3-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec3-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec3.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec3.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec4-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec4-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec4.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil-vec4.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/ceil.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec2-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec2-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec2.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec2.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec3-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec3-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec3.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec3.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec4-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec4-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec4.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/floor-vec4.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/floor.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/floor.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec2-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec2-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec2.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec2.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec3-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec3-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec3.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec3.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec4-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec4-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec4.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/fract-vec4.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/fract.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/fract.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec2-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec2-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec2.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec2.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec3-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec3-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec3.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec3.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec4-ref.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec4-ref.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec4.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/sign-vec4.vert
content/canvas/test/webgl/conformance/shaders/glsl-features/sign.frag
content/canvas/test/webgl/conformance/shaders/glsl-features/sign.vert
content/canvas/test/webgl/conformance/shaders/misc/00_shaders.txt
content/canvas/test/webgl/conformance/shaders/misc/shared-a.frag
content/canvas/test/webgl/conformance/shaders/misc/shared-b.frag
content/canvas/test/webgl/conformance/shaders/misc/shared.vert
content/canvas/test/webgl/conformance/tex-image-and-sub-image-2d-with-array-buffer-view.html
content/canvas/test/webgl/conformance/tex-image-and-sub-image-2d-with-canvas.html
content/canvas/test/webgl/conformance/tex-image-and-sub-image-2d-with-image-data.html
content/canvas/test/webgl/conformance/tex-image-and-sub-image-2d-with-image.html
content/canvas/test/webgl/conformance/tex-image-and-sub-image-2d-with-video.html
content/canvas/test/webgl/conformance/tex-image-and-uniform-binding-bugs.html
content/canvas/test/webgl/conformance/tex-image-with-format-and-type.html
content/canvas/test/webgl/conformance/tex-image-with-invalid-data.html
content/canvas/test/webgl/conformance/tex-input-validation.html
content/canvas/test/webgl/conformance/tex-sub-image-2d-bad-args.html
content/canvas/test/webgl/conformance/tex-sub-image-2d.html
content/canvas/test/webgl/conformance/texparameter-test.html
content/canvas/test/webgl/conformance/texture-active-bind-2.html
content/canvas/test/webgl/conformance/texture-active-bind.html
content/canvas/test/webgl/conformance/texture-complete.html
content/canvas/test/webgl/conformance/texture-formats-test.html
content/canvas/test/webgl/conformance/texture-npot-video.html
content/canvas/test/webgl/conformance/texture-npot.html
content/canvas/test/webgl/conformance/texture-transparent-pixels-initialized.html
content/canvas/test/webgl/conformance/triangle.html
content/canvas/test/webgl/conformance/type-conversion-test.html
content/canvas/test/webgl/conformance/uniform-location.html
content/canvas/test/webgl/conformance/uniform-samplers-test.html
content/canvas/test/webgl/conformance/uninitialized-test.html
content/canvas/test/webgl/conformance/viewport-unchanged-upon-resize.html
content/canvas/test/webgl/conformance/webgl-specific.html
content/canvas/test/webgl/delete-quickCheckAPI.patch
content/canvas/test/webgl/disable-gl-min-textures.patch
content/canvas/test/webgl/dont-load-image-from-internet.patch
content/canvas/test/webgl/extra/big-fbos-example.html
content/canvas/test/webgl/extra/canvas-compositing-test.html
content/canvas/test/webgl/extra/fbo-lost-context.html
content/canvas/test/webgl/extra/lots-of-polys-example.html
content/canvas/test/webgl/extra/out-of-memory.html
content/canvas/test/webgl/extra/out-of-resources.html
content/canvas/test/webgl/extra/slow-shader-example.html
content/canvas/test/webgl/extra/webgl-info.html
content/canvas/test/webgl/failing_tests_linux.txt
content/canvas/test/webgl/failing_tests_mac.txt
content/canvas/test/webgl/failing_tests_windows.txt
content/canvas/test/webgl/increase-timeout-delays.patch
content/canvas/test/webgl/misc/program-test-1.html
content/canvas/test/webgl/test_webgl_conformance_test_suite.html
content/canvas/test/webgl/webgl-conformance-tests.html
--- a/content/canvas/test/webgl/00_test_list.txt
+++ b/content/canvas/test/webgl/00_test_list.txt
@@ -1,6 +1,5 @@
 // files that end in .txt list other tests
 // other lines are assumed to be .html files
 
 conformance/00_test_list.txt
-conformance/more/00_test_list.txt
 
--- a/content/canvas/test/webgl/README.mozilla
+++ b/content/canvas/test/webgl/README.mozilla
@@ -1,15 +1,13 @@
-This is a local copy of the WebGL conformance suite, SVN revision 15318
+This is a local copy of the WebGL conformance suite, version 1.0.0.
 
 The canonical location for this testsuite is:
 
-  https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/webgl-conformance-tests.html
+  https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/conformance-suites/1.0.0/webgl-conformance-tests.html
 
 All files and directories in this directory, with the exceptions listed below, come from
 upstream and should not be modified without corresponding upstream fixes and/or a
 patch file in this directory. The exceptions (the Mozilla-specific files) are:
- * the crossorigin directory is not from upstream (not easy to share, as it relies on special features of the HTTP server used for our test framework)
  * README.mozilla (this file)
  * failing_tests_*.txt
  * Makefile.in
  * *.patch files, if any
-
--- a/content/canvas/test/webgl/conformance/00_test_list.txt
+++ b/content/canvas/test/webgl/conformance/00_test_list.txt
@@ -1,65 +1,56 @@
 array-buffer-crash.html
 array-buffer-view-crash.html
 array-unit-tests.html
 bad-arguments-test.html
 buffer-bind-test.html
 buffer-data-array-buffer.html
 buffer-preserve-test.html
-buffer-offscreen-test.html
 canvas-test.html
-canvas-zero-size.html
 constants.html
 context-attributes-alpha-depth-stencil-antialias.html
 context-lost-restored.html
 context-lost.html
 context-type-test.html
 copy-tex-image-and-sub-image-2d.html
 draw-arrays-out-of-bounds.html
 draw-elements-out-of-bounds.html
-drawingbuffer-static-canvas-test.html
-drawingbuffer-test.html
 error-reporting.html
 framebuffer-object-attachment.html
 framebuffer-test.html
 get-active-test.html
 gl-bind-attrib-location-test.html
 gl-clear.html
 gl-drawelements.html
 gl-enable-enum-test.html
 gl-enable-vertex-attrib.html
 gl-enum-tests.html
-gl-fragcoord.html
-shaders/00_test_list.txt
 gl-get-active-attribute.html
 gl-get-active-uniform.html
 gl-get-calls.html
-gl-geterror.html
 gl-getshadersource.html
 gl-getstring.html
 gl-min-attribs.html
-gl-min-textures.html
+# gl-min-textures.html
 gl-min-uniforms.html
 gl-object-get-calls.html
 gl-pixelstorei.html
 gl-scissor-test.html
 gl-shader-test.html
 gl-teximage.html
 gl-uniform-arrays.html
 gl-uniform-bool.html
 gl-uniformmatrix4fv.html
 gl-unknown-uniform.html
+gl-vertex-attrib.html
 gl-vertex-attrib-zero-issues.html
-gl-vertex-attrib.html
 gl-vertexattribpointer.html
-gl-vertexattribpointer-offsets.html
 #glsl-2types-of-textures-on-same-unit.html
 glsl-conformance.html
-glsl-long-variable-names.html
 incorrect-context-object-behaviour.html
 index-validation-copies-indices.html
 index-validation-crash-with-buffer-sub-data.html
 index-validation-verifies-too-many-indices.html
 index-validation-with-resized-buffer.html
 index-validation.html
 instanceof-test.html
 invalid-UTF-16.html
@@ -68,42 +59,41 @@ is-object.html
 methods.html
 more-than-65536-points.html
 null-object-behaviour.html
 null-uniform-location.html
 object-deletion-behaviour.html
 oes-standard-derivatives.html
 oes-texture-float.html
 oes-vertex-array-object.html
-origin-clean-conformance.html
+# origin-clean-conformance.html # is obsolete because of bug 656277
 point-size.html
-premultiplyalpha-test.html
 program-test.html
 read-pixels-pack-alignment.html
 read-pixels-test.html
 renderbuffer-initialization.html
 resource-sharing-test.html
 tex-image-and-sub-image-2d-with-array-buffer-view.html
-tex-image-and-sub-image-2d-with-canvas.html
 tex-image-and-sub-image-2d-with-image-data.html
 tex-image-and-sub-image-2d-with-image.html
 tex-image-and-sub-image-2d-with-video.html
 tex-image-and-uniform-binding-bugs.html
 tex-image-with-format-and-type.html
 tex-image-with-invalid-data.html
 tex-input-validation.html
 tex-sub-image-2d-bad-args.html
 tex-sub-image-2d.html
 texparameter-test.html
 texture-active-bind-2.html
 texture-active-bind.html
 texture-complete.html
 texture-formats-test.html
 texture-npot.html
-texture-npot-video.html
 texture-transparent-pixels-initialized.html
 triangle.html
 type-conversion-test.html
 uniform-location.html
 uniform-samplers-test.html
 uninitialized-test.html
 viewport-unchanged-upon-resize.html
 webgl-specific.html
+more/00_test_list.txt
+
--- a/content/canvas/test/webgl/conformance/array-buffer-crash.html
+++ b/content/canvas/test/webgl/conformance/array-buffer-crash.html
@@ -1,16 +1,15 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2010 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
@@ -29,10 +28,14 @@ try {
 } catch (e) {
 }
 
 testPassed("new ArrayBuffer().byteLength did not crash");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
+
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/array-buffer-view-crash.html
+++ b/content/canvas/test/webgl/conformance/array-buffer-view-crash.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2010 The Chromium Authors. All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:
 
    * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
@@ -22,20 +22,18 @@ A PARTICULAR PURPOSE ARE DISCLAIMED. IN 
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
@@ -56,10 +54,13 @@ try {
 }
 
 testPassed("new Uint32Array().length did not crash");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/array-unit-tests.html
+++ b/content/canvas/test/webgl/conformance/array-unit-tests.html
@@ -1,11 +1,11 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
-Copyright (C) 2011 Apple Computer, Inc.  All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
+Copyright (C) 2009 Apple Computer, Inc.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:
 
    * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
@@ -23,20 +23,18 @@ A PARTICULAR PURPOSE ARE DISCLAIMED. IN 
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
@@ -507,21 +505,17 @@ function shouldThrowIndexSizeErr(func, t
         testPassed(text + " threw an exception");
     }
 }
 
 function testConstructionWithOutOfRangeValues(type, name) {
     shouldThrowIndexSizeErr(function() {
         var buffer = new ArrayBuffer(4);
         var array = new type(buffer, 4, 0x3FFFFFFF);
-    }, "Construction of " + name + " with out-of-range number of elements");
-    shouldThrowIndexSizeErr(function() {
-        var buffer = new ArrayBuffer(4);
-        var array = new type(buffer, 8);
-    }, "Construction of " + name + " with out-of-range offset");
+    }, "Construction of " + name + " with out-of-range values");
 }
 
 function testConstructionWithNegativeOutOfRangeValues(type, name) {
     try {
         var buffer = new ArrayBuffer(-1);
         testFailed("Construction of ArrayBuffer with negative size should throw exception");
     } catch (e) {
         testPassed("Construction of ArrayBuffer with negative size threw exception");
@@ -576,31 +570,16 @@ function testConstructionWithBothArrayBu
     var array2 = new type(bufByteLength / elementSizeInBytes);
     if (array1.length == array2.length) {
         testPassed("Array lengths matched with explicit and implicit creation of ArrayBuffer");
     } else {
         testFailed("Array lengths DID NOT MATCH with explicit and implicit creation of ArrayBuffer");
     }
 }
 
-function testConstructionWithSubPortionOfArrayBuffer(type, name, elementSizeInBytes) {
-    if (elementSizeInBytes > 1) {
-        // Test construction with a valid sub-portion of an array buffer
-        // (whose size is not an integral multiple of the element size).
-        var size = 4 * elementSizeInBytes + (elementSizeInBytes / 2);
-        var buf = new ArrayBuffer(size);
-        try {
-            var array = new type(buf, 0, 2);
-            testPassed("new " + name + "(new ArrayBuffer(" + size + "), 0, 2) succeeded");
-        } catch (e) {
-            testFailed("new " + name + "(new ArrayBuffer(" + size + "), 0, 2) failed: " + e);
-        }
-    }
-}
-
 // These need to be global for shouldBe to see them
 var array;
 var typeSize;
 
 function testSubarrayWithOutOfRangeValues(type, name, sz) {
     debug("Testing subarray of " + name);
     try {
         var buffer = new ArrayBuffer(32);
@@ -720,22 +699,16 @@ function testNaNConversion(type, name) {
   try {
     switch (type) {
     case Float32Array:
       for (var i = 0; i < array.length; ++i) {
         array[i] = NaN;
         results[i] = array[i];
       }
       break;
-    case Float64Array:
-      for (var i = 0; i < array.length; ++i) {
-        array[i] = NaN;
-        results[i] = array[i];
-      }
-      break;
     case Int8Array:
       for (var i = 0; i < array.length; ++i) {
         array[i] = NaN;
         results[i] = array[i];
       }
       break;
     case Int16Array:
       for (var i = 0; i < array.length; ++i) {
@@ -768,17 +741,17 @@ function testNaNConversion(type, name) {
       }
       break;
     default:
       fail("Unhandled type");
       break;
     }
 
     // Some types preserve NaN values; all other types convert NaN to zero.
-    if (type === Float32Array || type === Float64Array) {
+    if (type === Float32Array) {
       assert('initial NaN preserved', isNaN(new type([NaN])[0]));
       for (var i = 0; i < array.length; ++i)
         assert('NaN preserved via setter', isNaN(results[i]));
     } else {
       assertEq('initial NaN converted to zero', 0, new type([NaN])[0]);
       for (var i = 0; i < array.length; ++i)
         assertEq('NaN converted to zero by setter', 0, results[i]);
     }
@@ -801,23 +774,16 @@ function runTests() {
   var testCases =
     [ {name: "Float32Array",
        unsigned: false,
        integral: false,
        elementSizeInBytes: 4,
        testValues:     [ -500.5, 500.5 ],
        expectedValues: [ -500.5, 500.5 ]
       },
-      {name: "Float64Array",
-       unsigned: false,
-       integral: false,
-       elementSizeInBytes: 8,
-       testValues:     [ -500.5, 500.5 ],
-       expectedValues: [ -500.5, 500.5 ]
-      },
       {name: "Int8Array",
        unsigned: false,
        integral: true,
        elementSizeInBytes: 1,
        testValues:     [ -128, 127, -129,  128 ],
        expectedValues: [ -128, 127,  127, -128 ]
       },
       {name: "Int16Array",
@@ -895,17 +861,16 @@ function runTests() {
                                        testCase.expectedValues);
     testConstructionWithNullBuffer(type, name);
     testConstructionWithOutOfRangeValues(type, name);
     testConstructionWithNegativeOutOfRangeValues(type, name);
     testConstructionWithUnalignedOffset(type, name, testCase.elementSizeInBytes);
     testConstructionWithUnalignedLength(type, name, testCase.elementSizeInBytes);
     testConstructionOfHugeArray(type, name, testCase.elementSizeInBytes);
     testConstructionWithBothArrayBufferAndLength(type, name, testCase.elementSizeInBytes);
-    testConstructionWithSubPortionOfArrayBuffer(type, name, testCase.elementSizeInBytes);
     testSubarrayWithOutOfRangeValues(type, name, testCase.elementSizeInBytes);
     testSubarrayWithDefaultValues(type, name, testCase.elementSizeInBytes);
     testSettingFromArrayWithOutOfRangeOffset(type, name);
     testSettingFromFakeArrayWithOutOfRangeLength(type, name);
     testSettingFromTypedArrayWithOutOfRangeOffset(type, name);
     negativeTestGetAndSetMethods(type, name);
     testNaNConversion(type, name);
   }
--- a/content/canvas/test/webgl/conformance/bad-arguments-test.html
+++ b/content/canvas/test/webgl/conformance/bad-arguments-test.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (C) 2011 Apple Computer, Inc.  All rights reserved.
+Copyright (C) 2009 Apple Computer, Inc.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
@@ -17,20 +17,18 @@ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHA
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 <script src="resources/webgl-test-utils.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
--- a/content/canvas/test/webgl/conformance/buffer-bind-test.html
+++ b/content/canvas/test/webgl/conformance/buffer-bind-test.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
   <head>
-<meta charset="utf-8">
     <title>WebGL BindBuffer conformance test.</title>
     <link rel="stylesheet" href="../resources/js-test-style.css"/>
     <script src="../resources/js-test-pre.js"></script>
     <script src="resources/webgl-test.js"> </script>
 </head>
 <body>
 <canvas id="example" width="40" height="40" style="width: 40px; height: 40px;"></canvas>
 <div id="description"></div>
@@ -51,13 +51,17 @@ if (!gl) {
   gl.bindBuffer(gl.ARRAY_BUFFER, buf);
   glErrorShouldBe(gl, gl.INVALID_OPERATION,
             "should get INVALID_OPERATION if attempting to bind buffer to different target");
 }
 
 debug("");
 successfullyParsed = true;
 </script>
+</body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
--- a/content/canvas/test/webgl/conformance/buffer-data-array-buffer.html
+++ b/content/canvas/test/webgl/conformance/buffer-data-array-buffer.html
@@ -1,17 +1,15 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2010 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
deleted file mode 100644
--- a/content/canvas/test/webgl/conformance/buffer-offscreen-test.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8">
-<title>WebGL required buffer clear behaviour test</title>
-<link rel="stylesheet" href="../resources/js-test-style.css"/>
-<script src="../resources/js-test-pre.js"></script>
-<script src="resources/webgl-test.js"> </script>
-<script src="resources/webgl-test-utils.js"> </script>
-<style type="text/css">
-body {
-    height: 3000px;
-}
-</style>
-<script type="text/javascript">
-
-var iter = 0;
-var gl1;
-var gl2;
-
-var wtu = WebGLTestUtils;
-
-function timer() {
-    if (iter == 0) {
-        // some random hacky stuff to make sure that we get a compositing step
-        window.scrollBy(0, 10);
-        window.scrollBy(0, -10);
-        iter++;
-
-        setTimeout(timer, 500);
-    } else if (iter == 1) {
-        function clear(gl) {
-            // scissor was set earlier
-            gl.clearColor(0, 0, 1, 1);
-            gl.clear(gl.COLOR_BUFFER_BIT);
-        }
-        clear(gl1);
-        clear(gl2);
-
-        debug("check on screen canvas");
-        wtu.checkCanvasRect(gl1, 0, 10, 10, 10, [0, 0, 255, 255], "cleared corner should be blue, stencil should be preserved");
-        wtu.checkCanvasRect(gl1, 0, 0, 10, 10, [0, 0, 0, 0], "remainder of buffer should be cleared");
-        debug("check off screen canvas");
-        wtu.checkCanvasRect(gl2, 0, 10, 10, 10, [0, 0, 255, 255], "cleared corner should be blue, stencil should be preserved");
-        wtu.checkCanvasRect(gl2, 0, 0, 10, 10, [255, 0, 0, 255], "remainder of buffer should be un-cleared red");
-
-        finishTest();
-    }
-}
-
-function go() {
-    description("This test ensures WebGL implementations correctly clear the drawing buffer on composite if preserveDrawingBuffer is false.");
-
-    debug("");
-
-    gl1 = create3DContext(document.getElementById("c"));
-    c2 = document.createElement('canvas');
-    gl2 = create3DContext(c2);
-    shouldBeTrue("gl1 != null");
-    shouldBeTrue("gl2 != null");
-
-    shouldBeTrue('gl1.getContextAttributes().preserveDrawingBuffer == false');
-    shouldBeTrue('gl2.getContextAttributes().preserveDrawingBuffer == false');
-
-    function init(gl) {
-        gl.clearColor(1, 0, 0, 1);
-        gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
-
-        // enable scissor here, before compositing, to make sure it's correctly
-        // ignored and restored
-        gl.scissor(0, 10, 10, 10);
-        gl.enable(gl.SCISSOR_TEST);
-    }
-
-    init(gl1);
-    init(gl2);
-
-    setTimeout(timer, 500);
-}
-
-window.addEventListener("load", go, false);
-
-successfullyParsed = true;
-</script>
-</head>
-<body>
-<div id="description"></div>
-<canvas width="20" height="20" style="border: 1px solid blue;" id="c"></canvas>
-<div id="console"></div>
-</body>
-</html>
-
--- a/content/canvas/test/webgl/conformance/buffer-preserve-test.html
+++ b/content/canvas/test/webgl/conformance/buffer-preserve-test.html
@@ -1,77 +1,78 @@
 <!DOCTYPE HTML>
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL required buffer clear behaviour test</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 <style type="text/css">
 body {
     height: 3000px;
 }
 </style>
 <script type="text/javascript">
 
 var iter = 0;
-var gl1;
+var gl;
 
 var wtu = WebGLTestUtils;
 
+function checkPixel(gl, x, y, c) {
+    var buf = new Uint8Array(4);
+    gl.readPixels(x, y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, buf);
+
+    return buf[0] == c[0] &&
+	buf[1] == c[1] &&
+	buf[2] == c[2] &&
+	buf[3] == c[3];
+}
+
 function timer() {
     if (iter == 0) {
-        // some random hacky stuff to make sure that we get a compositing step
-        window.scrollBy(0, 10);
-        window.scrollBy(0, -10);
-        iter++;
+	// some random hacky stuff to make sure that we get a compositing step
+	window.scrollBy(0, 10);
+	window.scrollBy(0, -10);
+	iter++;
 
-        setTimeout(timer, 500);
+	setTimeout(timer, 500);
     } else if (iter == 1) {
-        function clear(gl) {
-            // scissor was set earlier
-            gl.clearColor(0, 0, 1, 1);
-            gl.clear(gl.COLOR_BUFFER_BIT);
+	// scissor was set earlier
+	gl.clearColor(0, 0, 1, 1);
+	gl.clear(gl.COLOR_BUFFER_BIT);
 
-            wtu.checkCanvasRect(gl, 0, 10, 10, 10, [0, 0, 255, 255], "cleared corner should be blue, stencil should be preserved");
-            wtu.checkCanvasRect(gl, 0, 0, 10, 10, [0, 0, 0, 0], "remainder of buffer should be cleared");
-        }
-        clear(gl1);
+	wtu.checkCanvasRect(gl, 0, 10, 10, 10, [0, 0, 255, 255], "cleared corner should be blue, stencil should be preserved");
+	wtu.checkCanvasRect(gl, 0, 0, 10, 10, [0, 0, 0, 0], "remainder of buffer should be cleared");
 
-        finishTest();
+	finishTest();
     }
 }
 
 function go() {
     description("This test ensures WebGL implementations correctly clear the drawing buffer on composite if preserveDrawingBuffer is false.");
 
     debug("");
 
-    gl1 = create3DContext(document.getElementById("c"));
-    if (!gl1) {
-        finishTest();
-        return;
+    gl = create3DContext(document.getElementById("c"));
+    if (!gl) {
+	finishTest();
+	return;
     }
 
-    shouldBeTrue("gl1 != null");
-    shouldBeTrue('gl1.getContextAttributes().preserveDrawingBuffer == false');
+    shouldBeTrue('gl.getContextAttributes().preserveDrawingBuffer == false');
 
-    function init(gl) {
-        gl.clearColor(1, 0, 0, 1);
-        gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
+    gl.clearColor(1, 0, 0, 1);
+    gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
 
-        // enable scissor here, before compositing, to make sure it's correctly
-        // ignored and restored
-        gl.scissor(0, 10, 10, 10);
-        gl.enable(gl.SCISSOR_TEST);
-    }
-
-    init(gl1);
+    // enable scissor here, before compositing, to make sure it's correctly
+    // ignored and restored
+    gl.scissor(0, 10, 10, 10);
+    gl.enable(gl.SCISSOR_TEST);
 
     setTimeout(timer, 500);
 }
 
 window.addEventListener("load", go, false);
 
 successfullyParsed = true;
 </script>
--- a/content/canvas/test/webgl/conformance/canvas-test.html
+++ b/content/canvas/test/webgl/conformance/canvas-test.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL Canvas Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
@@ -182,11 +183,13 @@ if (!gl) {
       }
 
       debug("");
       finishTest();
     }
    }, 1000/30);
 }
 </script>
+<script>
+</script>
 
 </body>
 </html>
deleted file mode 100644
--- a/content/canvas/test/webgl/conformance/canvas-zero-size.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
-Use of this source code is governed by a BSD-style license that can be
-  found in the LICENSE file.
- -->
-<!DOCTYPE html>
-<html>
-  <head>
-  <meta charset="utf-8">
-    <title>Zero Size Canvas Test</title>
-    <link rel="stylesheet" href="../resources/js-test-style.css"/>
-    <script src="../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>
-description("Tests that a zero size canvas does not fail.");
-var wtu = WebGLTestUtils;
-var canvas = document.createElement('canvas');
-var gl = wtu.create3DContext(canvas);
-canvas.width = 0;
-canvas.height = 0;
-gl.viewport(0, 0, 0, 0);
-var program = wtu.setupTexturedQuad(gl);
-shouldBeTrue("program != null");
-var tex = gl.createTexture();
-gl.bindTexture(gl.TEXTURE_2D, tex);
-var pixel = new Uint8Array([0, 255, 0, 255]);
-gl.texImage2D(
-  gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, pixel);
-wtu.drawQuad(gl);
-
-glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors from setup.");
-successfullyParsed = true;
-</script>
-<script src="../resources/js-test-post.js"></script>
-
-</body>
-</html>
--- a/content/canvas/test/webgl/conformance/constants.html
+++ b/content/canvas/test/webgl/conformance/constants.html
@@ -1,17 +1,16 @@
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <!--
-Copyright (c) 2011 Ilmari Heikkinen. All rights reserved.
+Copyright (c) 2009 Ilmari Heikkinen. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
 -->
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL Constants Test</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
@@ -477,11 +476,13 @@ for (var i in gl) {
     debug(i);
   }
 }
 
 debug("");
 successfullyParsed = true;
 </script>
 <script src="../resources/js-test-post.js"></script>
+<script>
+</script>
 
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/context-attributes-alpha-depth-stencil-antialias.html
+++ b/content/canvas/test/webgl/conformance/context-attributes-alpha-depth-stencil-antialias.html
@@ -1,91 +1,71 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2010 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 <script id="vshader" type="x-shader/x-vertex">
 attribute vec3 pos;
 attribute vec4 colorIn;
 varying vec4 color;
 
 void main()
 {
     color = colorIn;
     gl_Position = vec4(pos.xyz, 1.0);
 }
 </script>
 
 <script id="fshader" type="x-shader/x-fragment">
-precision mediump float;
-
+#ifdef GL_ES
+precision highp float;
+#endif
 varying vec4 color;
 
 void main()
 {
     gl_FragColor = color;
 }
 </script>
 
 <script>
 var successfullyParsed = false;
 
 // These four declarations need to be global for "shouldBe" to see them
 var webGL = null;
 var contextAttribs = null;
 var pixel = [0, 0, 0, 1];
 var correctColor = null;
-var value;
 
 function init()
 {
     if (window.initNonKhronosFramework) {
         window.initNonKhronosFramework(true);
     }
 
     description('Verify WebGLContextAttributes are working as specified, including alpha, depth, stencil, antialias, but not premultipliedAlpha');
 
     runTest();
 }
 
-function getWebGL(canvasWidth, canvasHeight, contextAttribs, clearColor, clearDepth, clearStencil)
+function getWebGL(canvasName, contextAttribs, clearColor, clearDepth, clearStencil)
 {
-    var canvas = document.createElement("canvas");
-    if (!canvas)
-        return null;
-    canvas.width = canvasWidth;
-    canvas.height = canvasHeight;
-
-    var context = create3DContext(canvas, contextAttribs);
-    if (!context)
-        return null;
-
-    context.program = createProgram(context, "vshader", "fshader", ["pos", "colorIn"]);
-    if (!context.program)
-        return null;
-
-    context.useProgram(context.program);
-
-    context.enable(context.DEPTH_TEST);
-    context.enable(context.STENCIL_TEST);
-    context.disable(context.BLEND);
-
-    context.clearColor(clearColor[0], clearColor[1], clearColor[2], clearColor[3]);
-    context.clearDepth(clearDepth);
-    context.clearStencil(clearStencil);
-    context.clear(context.COLOR_BUFFER_BIT | context.DEPTH_BUFFER_BIT | context.STENCIL_BUFFER_BIT);
-
+    var context = initWebGL(canvasName, "vshader", "fshader", ["pos", "colorIn"], clearColor, clearDepth, contextAttribs);
+    if (context) {
+        context.clearStencil(clearStencil);
+        context.enable(context.STENCIL_TEST);
+        context.disable(context.BLEND);
+        context.clear(context.COLOR_BUFFER_BIT | context.DEPTH_BUFFER_BIT | context.STENCIL_BUFFER_BIT);
+    }
     return context;
 }
 
 function drawAndReadPixel(gl, vertices, colors, x, y)
 {
     var colorOffset = vertices.byteLength;
 
     var vbo = gl.createBuffer();
@@ -105,39 +85,38 @@ function drawAndReadPixel(gl, vertices, 
     gl.readPixels(x, y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, buf);
     return buf;
 }
 
 function testAlpha(alpha)
 {
     debug("Testing alpha = " + alpha);
     if (alpha)
-        shouldBeNonNull("webGL = getWebGL(1, 1, { alpha: true, depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 0 ], 1, 0)");
+        shouldBeNonNull("webGL = getWebGL('alphaOn', { alpha: true, depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 0 ], 1, 0)");
     else
-        shouldBeNonNull("webGL = getWebGL(1, 1, { alpha: false, depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 0 ], 1, 0)");
+        shouldBeNonNull("webGL = getWebGL('alphaOff', { alpha: false, depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 0 ], 1, 0)");
     shouldBeNonNull("contextAttribs = webGL.getContextAttributes()");
-    shouldBeTrue("contextAttribs.alpha == " + alpha);
 
     var buf = new Uint8Array(1 * 1 * 4);
     webGL.readPixels(0, 0, 1, 1, webGL.RGBA, webGL.UNSIGNED_BYTE, buf);
     pixel[0] = buf[0];
     pixel[1] = buf[1];
     pixel[2] = buf[2];
     pixel[3] = buf[3];
     correctColor = (contextAttribs.alpha ? [0, 0, 0, 0] : [0, 0, 0, 255]);
     shouldBe("pixel", "correctColor");
 }
 
 function testDepth(depth)
 {
     debug("Testing depth = " + depth);
     if (depth)
-        shouldBeNonNull("webGL = getWebGL(1, 1, { stencil: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
+        shouldBeNonNull("webGL = getWebGL('depthOn', { stencil: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
     else
-        shouldBeNonNull("webGL = getWebGL(1, 1, { depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
+        shouldBeNonNull("webGL = getWebGL('depthOff', { depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
     shouldBeNonNull("contextAttribs = webGL.getContextAttributes()");
 
     webGL.depthFunc(webGL.NEVER);
 
     var vertices = new Float32Array([
          1.0,  1.0, 0.0,
         -1.0,  1.0, 0.0,
         -1.0, -1.0, 0.0,
@@ -160,19 +139,19 @@ function testDepth(depth)
     correctColor = (contextAttribs.depth ? [0, 0, 0, 255] : [255, 0, 0, 255]);
     shouldBe("pixel", "correctColor");
 }
 
 function testStencil(stencil)
 {
     debug("Testing stencil = " + stencil);
     if (stencil)
-        shouldBeNonNull("webGL = getWebGL(1, 1, { depth: false, stencil: true, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
+        shouldBeNonNull("webGL = getWebGL('stencilOn', { depth: false, stencil: true, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
     else
-        shouldBeNonNull("webGL = getWebGL(1, 1, { depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
+        shouldBeNonNull("webGL = getWebGL('stencilOff', { depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
     shouldBeNonNull("contextAttribs = webGL.getContextAttributes()");
 
     webGL.depthFunc(webGL.ALWAYS);
 
     webGL.stencilFunc(webGL.NEVER, 1, 1);
     webGL.stencilOp(webGL.KEEP, webGL.KEEP, webGL.KEEP);
 
     var vertices = new Float32Array([
@@ -198,19 +177,19 @@ function testStencil(stencil)
     correctColor = (contextAttribs.stencil ? [0, 0, 0, 255] : [255, 0, 0, 255]);
     shouldBe("pixel", "correctColor");
 }
 
 function testAntialias(antialias)
 {
     debug("Testing antialias = " + antialias);
     if (antialias)
-        shouldBeNonNull("webGL = getWebGL(2, 2, { depth: false, stencil: false, alpha: false, antialias: true }, [ 0, 0, 0, 1 ], 1, 0)");
+        shouldBeNonNull("webGL = getWebGL('antialiasOn', { depth: false, stencil: false, alpha: false, antialias: true }, [ 0, 0, 0, 1 ], 1, 0)");
     else
-        shouldBeNonNull("webGL = getWebGL(2, 2, { depth: false, stencil: false, alpha: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
+        shouldBeNonNull("webGL = getWebGL('antialiasOff', { depth: false, stencil: false, alpha: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
     shouldBeNonNull("contextAttribs = webGL.getContextAttributes()");
 
     var vertices = new Float32Array([
          1.0, 1.0, 0.0,
         -1.0, 1.0, 0.0,
         -1.0, -1.0, 0.0]);
     var colors = new Uint8Array([
         255, 0, 0, 255,
@@ -234,12 +213,20 @@ function runTest()
     testAntialias(false);
 
     finishTest()
 }
 
 </script>
 </head>
 <body onload="init()">
+<canvas id="alphaOn" width="1px" height="1px"></canvas>
+<canvas id="alphaOff" width="1px" height="1px"></canvas>
+<canvas id="depthOn" width="1px" height="1px"></canvas>
+<canvas id="depthOff" width="1px" height="1px"></canvas>
+<canvas id="stencilOn" width="1px" height="1px"></canvas>
+<canvas id="stencilOff" width="1px" height="1px"></canvas>
+<canvas id="antialiasOn" width="2px" height="2px"></canvas>
+<canvas id="antialiasOff" width="2px" height="2px"></canvas>
 <div id="description"></div>
 <div id="console"></div>
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/context-lost-restored.html
+++ b/content/canvas/test/webgl/conformance/context-lost-restored.html
@@ -1,95 +1,50 @@
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 <script src="resources/webgl-test-utils.js"></script>
 <script>
 var wtu = WebGLTestUtils;
 var canvas;
 var gl;
 var shouldGenerateGLError;
 var extension_name = "WEBKIT_lose_context";
 var extension;
 var bufferObjects;
 var program;
 var texture;
 var texColor = [255, 10, 20, 255];
-var allowRestore;
 
 function init()
 {
     if (window.initNonKhronosFramework) {
         window.initNonKhronosFramework(true);
     }
 
-    description("Tests behavior under a restored context.");
-
-    shouldGenerateGLError = wtu.shouldGenerateGLError;
-    runTests();
-}
+    description("Tests behavior under a restored context");
 
-function runTests()
-{
-    testLosingContext();
-    testLosingAndRestoringContext();
+    canvas = document.getElementById("canvas");
+    canvas.addEventListener("webglcontextlost", testLostContext, false);
+    canvas.addEventListener("webglcontextrestored", testRestoredContext, false);
 
-    finish();
-}
+    gl = wtu.create3DContext(canvas);
+    shouldGenerateGLError = wtu.shouldGenerateGLError;
 
-function setupTest()
-{
-    canvas = document.createElement("canvas");
-    canvas.width = 1;
-    canvas.height = 1;
-    gl = wtu.create3DContext(canvas);
     extension = gl.getExtension(extension_name);
     if (!extension) {
         debug(extension_name + " extension not found.");
-        return false;
+        finish();
+        return;
     }
-    return true;
-}
-
-function testLosingContext()
-{
-    if (!setupTest())
-        return;
-
-    debug("Test losing a context and inability to restore it.");
-
-    canvas.addEventListener("webglcontextlost", testLostContext);
-    canvas.addEventListener("webglcontextrestored", testShouldNotRestoreContext);
-    allowRestore = false;
 
     testOriginalContext();
     extension.loseContext();
-    shouldGenerateGLError(gl, gl.INVALID_OPERATION, "extension.restoreContext()");
-    debug("");
-}
-
-function testLosingAndRestoringContext()
-{
-    if (!setupTest())
-        return;
-
-    debug("Test losing and restoring a context.");
-
-    canvas.addEventListener("webglcontextlost", testLostContext);
-    canvas.addEventListener("webglcontextrestored", testRestoredContext);
-    allowRestore = true;
-
-    testOriginalContext();
-    extension.loseContext();
-    shouldGenerateGLError(gl, gl.NO_ERROR, "extension.restoreContext()");
-    debug("");
 }
 
 function testRendering()
 {
     gl.clearColor(0, 0, 0, 255);
     gl.colorMask(1, 1, 1, 0);
     gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
 
@@ -110,31 +65,23 @@ function testOriginalContext()
 {
     debug("Test valid context");
     shouldBeFalse("gl.isContextLost()");
     shouldBe("gl.getError()", "gl.NO_ERROR");
     testRendering();
     debug("");
 }
 
-function testLostContext(e)
+function testLostContext()
 {
     debug("Test lost context");
     shouldBeTrue("gl.isContextLost()");
     shouldBe("gl.getError()", "gl.CONTEXT_LOST_WEBGL");
     shouldBe("gl.getError()", "gl.NO_ERROR");
     debug("");
-    if (allowRestore)
-        e.preventDefault();
-}
-
-function testShouldNotRestoreContext(e)
-{
-    testFailed("Should not restore the context unless preventDefault is called on the context lost event");
-    debug("");
 }
 
 function testResources(expected)
 {
     var tests = [
         "gl.bindTexture(gl.TEXTURE_2D, texture)",
         "gl.useProgram(program)",
         "gl.bindBuffer(gl.ARRAY_BUFFER, bufferObjects[0])",
@@ -153,16 +100,18 @@ function testRestoredContext()
     // Validate that using old resources fails.
     testResources(gl.INVALID_OPERATION);
 
     testRendering();
 
     // Validate new resources created in testRendering().
     testResources(gl.NO_ERROR);
     debug("");
+
+    finish();
 }
 
 function finish() {
     successfullyParsed = true;
     var epilogue = document.createElement("script");
     epilogue.onload = function() {
         if (window.nonKhronosFrameworkNotifyDone)
             window.nonKhronosFrameworkNotifyDone();
@@ -171,10 +120,11 @@ function finish() {
     document.body.appendChild(epilogue);
 }
 
 </script>
 </head>
 <body onload="init()">
 <div id="description"></div>
 <div id="console"></div>
+<canvas id="canvas" width="1px" height="1px"></canvas>
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/context-lost.html
+++ b/content/canvas/test/webgl/conformance/context-lost.html
@@ -1,12 +1,10 @@
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 <script src="resources/webgl-test-utils.js"></script>
 <script>
 var wtu;
 var canvas;
 var gl;
@@ -59,19 +57,16 @@ function init()
 
     loseContext();
 }
 
 function loseContext()
 {
     debug("");
     debug("Lose context");
-
-    // Note: this will cause the context to be lost, and the
-    // webglcontextlost event listener to be called, immediately.
     shouldGenerateGLError(gl, gl.NO_ERROR, "extension.loseContext()");
     debug("");
 }
 
 function testValidContext()
 {
     debug("Test valid context");
 
@@ -135,18 +130,18 @@ function testLostContext()
         "gl.attachShader(program, shader)",
         "gl.bindBuffer(gl.ARRAY_BUFFER, buffer)",
         "gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer)",
         "gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer)",
         "gl.bindTexture(gl.TEXTURE_2D, texture)",
         "gl.blendColor(1.0, 1.0, 1.0, 1.0)",
         "gl.blendEquation(gl.FUNC_ADD)",
         "gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD)",
-        "gl.blendFunc(gl.ONE, gl.ONE)",
-        "gl.blendFuncSeparate(gl.ONE, gl.ONE, gl.ONE, gl.ONE)",
+        "gl.blendFunc(gl.ONE)",
+        "gl.blendFuncSeparate(gl.ONE, gl.ONE)",
         "gl.bufferData(gl.ARRAY_BUFFER, 0, gl.STATIC_DRAW)",
         "gl.bufferData(gl.ARRAY_BUFFER, arrayBufferView, gl.STATIC_DRAW)",
         "gl.bufferData(gl.ARRAY_BUFFER, arrayBuffer, gl.STATIC_DRAW)",
         "gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBufferView)",
         "gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBuffer)",
         "gl.clear(gl.COLOR_BUFFER_BIT)",
         "gl.clearColor(1, 1, 1, 1)",
         "gl.clearDepth(1)",
@@ -295,18 +290,16 @@ function testLostContext()
     shouldBeFalse("gl.isFramebuffer(framebuffer)");
     shouldBeFalse("gl.isProgram(program)");
     shouldBeFalse("gl.isRenderbuffer(renderbuffer)");
     shouldBeFalse("gl.isShader(shader)");
     shouldBeFalse("gl.isTexture(texture)");
 
     shouldBe("gl.getError()", "gl.NO_ERROR");
 
-    debug("");
-
     finish();
 }
 
 function finish() {
     successfullyParsed = true;
     var epilogue = document.createElement("script");
     epilogue.onload = function() {
         if (window.nonKhronosFrameworkNotifyDone)
--- a/content/canvas/test/webgl/conformance/context-type-test.html
+++ b/content/canvas/test/webgl/conformance/context-type-test.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL Canvas Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
@@ -19,31 +20,28 @@ found in the LICENSE file.
 <canvas id="canvas" style="width: 50px; height: 50px;"> </canvas>
 <canvas id="canvas2d" width="40" height="40"> </canvas>
 <script>
 description("This test ensures WebGL implementations interact correctly with the canvas tag.");
 
 debug("");
 debug("Canvas.getContext");
 
-assertMsg(window.WebGLRenderingContext,
-          "WebGLRenderingContext should be a member of window");
-assertMsg('WebGLRenderingContext' in window,
-          "WebGLRenderingContext should be 'in' window");
-
 var canvas = document.getElementById("canvas");
 var gl = create3DContext(canvas);
 if (!gl) {
   testFailed("context does not exist");
 } else {
   testPassed("context exists");
 
   debug("Checking context type");
   assertMsg(gl instanceof WebGLRenderingContext,
             "context type should be WebGLRenderingContext");
 }
 debug("");
 successfullyParsed = true;
 </script>
 <script src="../resources/js-test-post.js"></script>
+<script>
+</script>
 
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/copy-tex-image-and-sub-image-2d.html
+++ b/content/canvas/test/webgl/conformance/copy-tex-image-and-sub-image-2d.html
@@ -1,17 +1,15 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2010 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 <script src="resources/webgl-test-utils.js"></script>
 
 <script>
 var successfullyParsed = false;
 
--- a/content/canvas/test/webgl/conformance/draw-arrays-out-of-bounds.html
+++ b/content/canvas/test/webgl/conformance/draw-arrays-out-of-bounds.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (C) 2011 Apple Computer, Inc.  All rights reserved.
+Copyright (C) 2009 Apple Computer, Inc.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
@@ -17,20 +17,18 @@ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHA
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
--- a/content/canvas/test/webgl/conformance/draw-elements-out-of-bounds.html
+++ b/content/canvas/test/webgl/conformance/draw-elements-out-of-bounds.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (C) 2011 Apple Computer, Inc.  All rights reserved.
+Copyright (C) 2009 Apple Computer, Inc.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
@@ -17,20 +17,18 @@ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHA
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
deleted file mode 100644
--- a/content/canvas/test/webgl/conformance/drawingbuffer-static-canvas-test.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
-Use of this source code is governed by a BSD-style license that can be
-found in the LICENSE file.
- -->
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>WebGL Canvas Conformance Tests</title>
-<link rel="stylesheet" href="../resources/js-test-style.css"/>
-<script src="../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>
-<canvas id="canvas" style="width: 50px; height: 50px;"> </canvas>
-<script>
-description("This test ensures WebGL implementations correctly implement drawingbufferWidth/Height with compositing.");
-
-debug("");
-
-var wtu = WebGLTestUtils;
-var err;
-var maxSize;
-var canvas = document.getElementById("canvas");
-var gl = wtu.create3DContext(canvas);
-if (!gl) {
-  testFailed("context does not exist");
-} else {
-  testPassed("context exists");
-
-  debug("");
-  debug("Checking drawingBufferWidth/drawingBufferHeight");
-
-  // Check that a canvas with no width or height is 300x150 pixels
-  shouldBe('gl.drawingBufferWidth', 'canvas.width');
-  shouldBe('gl.drawingBufferHeight', 'canvas.height');
-
-  // Check that changing the canvas size to something too large falls back to reasonable values.
-  maxSize = gl.getParameter(gl.MAX_VIEWPORT_DIMS);
-  shouldBeTrue('maxSize[0] > 0');
-  shouldBeTrue('maxSize[1] > 0');
-
-  // debug("MAX_VIEWPORT_DIMS = " + maxSize[0] + "x" + maxSize[1]);
-  canvas.width = maxSize[0] * 4;
-  canvas.height = maxSize[1] * 4;
-  shouldBeTrue('gl.drawingBufferWidth > 0');
-  shouldBeTrue('gl.drawingBufferHeight > 0');
-  shouldBeTrue('gl.drawingBufferWidth <= maxSize[0]');
-  shouldBeTrue('gl.drawingBufferHeight <= maxSize[1]');
-  shouldBe('gl.getError()', 'gl.NO_ERROR');
-}
-debug("")
-successfullyParsed = true;
-</script>
-<script src="../resources/js-test-post.js"></script>
-</body>
-</html>
deleted file mode 100644
--- a/content/canvas/test/webgl/conformance/drawingbuffer-test.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
-Use of this source code is governed by a BSD-style license that can be
-found in the LICENSE file.
- -->
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>WebGL Canvas Conformance Tests</title>
-<link rel="stylesheet" href="../resources/js-test-style.css"/>
-<script src="../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>
-description("This test ensures WebGL implementations correctly implement drawingbufferWidth/Height.");
-
-debug("");
-
-var wtu = WebGLTestUtils;
-var err;
-var maxSize;
-var canvas = document.createElement("canvas");
-var gl = wtu.create3DContext(canvas);
-if (!gl) {
-  testFailed("context does not exist");
-} else {
-  testPassed("context exists");
-
-  debug("");
-  debug("Checking drawingBufferWidth/drawingBufferHeight");
-
-  // Check that a canvas with no width or height is 300x150 pixels
-  shouldBe('gl.drawingBufferWidth', 'canvas.width');
-  shouldBe('gl.drawingBufferHeight', 'canvas.height');
-
-  // Check that changing the canvas size to something too large falls back to reasonable values.
-  maxSize = gl.getParameter(gl.MAX_VIEWPORT_DIMS);
-  shouldBeTrue('maxSize[0] > 0');
-  shouldBeTrue('maxSize[1] > 0');
-
-  // debug("MAX_VIEWPORT_DIMS = " + maxSize[0] + "x" + maxSize[1]);
-  canvas.width = maxSize[0] * 4;
-  canvas.height = maxSize[1] * 4;
-  shouldBeTrue('gl.drawingBufferWidth > 0');
-  shouldBeTrue('gl.drawingBufferHeight > 0');
-  shouldBeTrue('gl.drawingBufferWidth <= maxSize[0]');
-  shouldBeTrue('gl.drawingBufferHeight <= maxSize[1]');
-  shouldBe('gl.getError()', 'gl.NO_ERROR');
-}
-debug("")
-successfullyParsed = true;
-</script>
-<script src="../resources/js-test-post.js"></script>
-</body>
-</html>
--- a/content/canvas/test/webgl/conformance/error-reporting.html
+++ b/content/canvas/test/webgl/conformance/error-reporting.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:
 
    * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
@@ -22,20 +22,18 @@ A PARTICULAR PURPOSE ARE DISCLAIMED. IN 
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
--- a/content/canvas/test/webgl/conformance/framebuffer-object-attachment.html
+++ b/content/canvas/test/webgl/conformance/framebuffer-object-attachment.html
@@ -1,50 +1,42 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2010 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
 <script>
 
 var gl;
 var fbo;
 var depthBuffer;
 var stencilBuffer;
 var depthStencilBuffer;
 var colorBuffer;
-var width;
-var height;
+var width = 2;
+var height = 2;
 
 function testAttachment(attachment, buffer, isConflicted)
 {
     shouldBeNonNull("fbo = gl.createFramebuffer()");
     gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);
     gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, colorBuffer);
     gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, buffer);
     glErrorShouldBe(gl, gl.NO_ERROR);
-    // If the framebuffer is in an error state for multiple reasons,
-    // we can't guarantee which one will be reported.
-    if ((width == 0 || height == 0) && !isConflicted) {
-        // Zero-sized renderbuffers are supposed to result in an incomplete attachment.
-        // However, certain combination may violate implementation specific restrictions.
-        shouldBeTrue("gl.checkFramebufferStatus(gl.FRAMEBUFFER) == gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT || gl.checkFramebufferStatus(gl.FRAMEBUFFER) == gl.FRAMEBUFFER_UNSUPPORTED");
-    } else if (isConflicted) {
+    if (isConflicted) {
         shouldBe("gl.checkFramebufferStatus(gl.FRAMEBUFFER)", "gl.FRAMEBUFFER_UNSUPPORTED");
         gl.clear(gl.COLOR_BUFFER_BIT);
         glErrorShouldBe(gl, gl.INVALID_FRAMEBUFFER_OPERATION);
         gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array(width * height * 4));
         glErrorShouldBe(gl, gl.INVALID_FRAMEBUFFER_OPERATION);
     }
 }
 
@@ -52,25 +44,18 @@ function testAttachments(attachment0, bu
 {
     shouldBeNonNull("fbo = gl.createFramebuffer()");
     gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);
     gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, colorBuffer);
     gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment0, gl.RENDERBUFFER, buffer0);
     glErrorShouldBe(gl, gl.NO_ERROR);
     gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment1, gl.RENDERBUFFER, buffer1);
     glErrorShouldBe(gl, gl.NO_ERROR);
-    // If the framebuffer is in an error state for multiple reasons,
-    // we can't guarantee which one will be reported.
-    if ((width == 0 || height == 0) && !isConflicted) {
-        // Zero-sized renderbuffers are supposed to result in an incomplete attachment.
-        // However, certain combination may violate implementation specific restrictions.
-        shouldBeTrue("gl.checkFramebufferStatus(gl.FRAMEBUFFER) == gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT || gl.checkFramebufferStatus(gl.FRAMEBUFFER) == gl.FRAMEBUFFER_UNSUPPORTED");
-    } else if (isConflicted) {
+    if (isConflicted)
         shouldBe("gl.checkFramebufferStatus(gl.FRAMEBUFFER)", "gl.FRAMEBUFFER_UNSUPPORTED");
-    }
 }
 
 function testColorRenderbuffer(internalformat)
 {
     shouldBeNonNull("colorBuffer = gl.createRenderbuffer()");
     gl.bindRenderbuffer(gl.RENDERBUFFER, colorBuffer);
     gl.renderbufferStorage(gl.RENDERBUFFER, internalformat, width, height);
     glErrorShouldBe(gl, gl.NO_ERROR);
@@ -78,109 +63,92 @@ function testColorRenderbuffer(internalf
 }
 
 function testDepthStencilRenderbuffer()
 {
     shouldBeNonNull("depthStencilBuffer = gl.createRenderbuffer()");
     gl.bindRenderbuffer(gl.RENDERBUFFER, depthStencilBuffer);
     gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, width, height);
     glErrorShouldBe(gl, gl.NO_ERROR);
-
-    // OpenGL itself doesn't seem to guarantee that e.g. a 2 x 0
-    // renderbuffer will report 2 for its width when queried.
-    if (!(height == 0 && width > 0))
-        shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)", "width");
-    if (!(width == 0 && height > 0))
-        shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)", "height");
+    shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)", "width");
+    shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)", "height");
     shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_INTERNAL_FORMAT)", "gl.DEPTH_STENCIL");
     shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_RED_SIZE)", "0");
     shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_GREEN_SIZE)", "0");
     shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_BLUE_SIZE)", "0");
     shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_ALPHA_SIZE)", "0");
-    // Avoid verifying these for zero-sized renderbuffers for the time
-    // being since it appears that even OpenGL doesn't guarantee them.
-    if (width > 0 && height > 0) {
-        shouldBeTrue("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_DEPTH_SIZE) > 0");
-        shouldBeTrue("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_STENCIL_SIZE) > 0");
-    }
+    shouldBeTrue("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_DEPTH_SIZE) > 0");
+    shouldBeTrue("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_STENCIL_SIZE) > 0");
     glErrorShouldBe(gl, gl.NO_ERROR);
     testAttachment(gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, false);
 }
 
 description("Test framebuffer object attachment behaviors");
 
-for (width = 0; width <= 2; width += 2)
-{
-    for (height = 0; height <= 2; height += 2)
-    {
-        debug("Dimensions " + width + " x " + height);
-
-        debug("Create renderbuffers");
-        shouldBeNonNull("gl = create3DContext()");
-        shouldBeNonNull("colorBuffer = gl.createRenderbuffer()");
-        gl.bindRenderbuffer(gl.RENDERBUFFER, colorBuffer);
-        gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, width, height);
-        glErrorShouldBe(gl, gl.NO_ERROR);
-        shouldBeNonNull("depthBuffer = gl.createRenderbuffer()");
-        gl.bindRenderbuffer(gl.RENDERBUFFER, depthBuffer);
-        gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, width, height);
-        glErrorShouldBe(gl, gl.NO_ERROR);
-        shouldBeNonNull("stencilBuffer = gl.createRenderbuffer()");
-        gl.bindRenderbuffer(gl.RENDERBUFFER, stencilBuffer);
-        gl.renderbufferStorage(gl.RENDERBUFFER, gl.STENCIL_INDEX8, width, height);
-        glErrorShouldBe(gl, gl.NO_ERROR);
-        shouldBeNonNull("depthStencilBuffer = gl.createRenderbuffer()");
-        gl.bindRenderbuffer(gl.RENDERBUFFER, depthStencilBuffer);
-        gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, width, height);
-        glErrorShouldBe(gl, gl.NO_ERROR);
+debug("Create renderbuffers");
+shouldBeNonNull("gl = create3DContext()");
+shouldBeNonNull("colorBuffer = gl.createRenderbuffer()");
+gl.bindRenderbuffer(gl.RENDERBUFFER, colorBuffer);
+gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, width, height);
+glErrorShouldBe(gl, gl.NO_ERROR);
+shouldBeNonNull("depthBuffer = gl.createRenderbuffer()");
+gl.bindRenderbuffer(gl.RENDERBUFFER, depthBuffer);
+gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, width, height);
+glErrorShouldBe(gl, gl.NO_ERROR);
+shouldBeNonNull("stencilBuffer = gl.createRenderbuffer()");
+gl.bindRenderbuffer(gl.RENDERBUFFER, stencilBuffer);
+gl.renderbufferStorage(gl.RENDERBUFFER, gl.STENCIL_INDEX8, width, height);
+glErrorShouldBe(gl, gl.NO_ERROR);
+shouldBeNonNull("depthStencilBuffer = gl.createRenderbuffer()");
+gl.bindRenderbuffer(gl.RENDERBUFFER, depthStencilBuffer);
+gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, width, height);
+glErrorShouldBe(gl, gl.NO_ERROR);
 
-        debug("Attach depth using DEPTH_ATTACHMENT");
-        testAttachment(gl.DEPTH_ATTACHMENT, depthBuffer, false);
-        debug("Attach depth using STENCIL_ATTACHMENT");
-        testAttachment(gl.STENCIL_ATTACHMENT, depthBuffer, true);
-        debug("Attach depth using DEPTH_STENCIL_ATTACHMENT");
-        testAttachment(gl.DEPTH_STENCIL_ATTACHMENT, depthBuffer, true);
-        debug("Attach stencil using STENCIL_ATTACHMENT");
-        testAttachment(gl.STENCIL_ATTACHMENT, stencilBuffer, false);
-        debug("Attach stencil using DEPTH_ATTACHMENT");
-        testAttachment(gl.DEPTH_ATTACHMENT, stencilBuffer, true);
-        debug("Attach stencil using DEPTH_STENCIL_ATTACHMENT");
-        testAttachment(gl.DEPTH_STENCIL_ATTACHMENT, stencilBuffer, true);
-        debug("Attach depthStencil using DEPTH_STENCIL_ATTACHMENT");
-        testAttachment(gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, false);
-        debug("Attach depthStencil using DEPTH_ATTACHMENT");
-        testAttachment(gl.DEPTH_ATTACHMENT, depthStencilBuffer, true);
-        debug("Attach depthStencil using STENCIL_ATTACHMENT");
-        testAttachment(gl.STENCIL_ATTACHMENT, depthStencilBuffer, true);
+debug("Attach depth using DEPTH_ATTACHMENT");
+testAttachment(gl.DEPTH_ATTACHMENT, depthBuffer, false);
+debug("Attach depth using STENCIL_ATTACHMENT");
+testAttachment(gl.STENCIL_ATTACHMENT, depthBuffer, true);
+debug("Attach depth using DEPTH_STENCIL_ATTACHMENT");
+testAttachment(gl.DEPTH_STENCIL_ATTACHMENT, depthBuffer, true);
+debug("Attach stencil using STENCIL_ATTACHMENT");
+testAttachment(gl.STENCIL_ATTACHMENT, stencilBuffer, false);
+debug("Attach stencil using DEPTH_ATTACHMENT");
+testAttachment(gl.DEPTH_ATTACHMENT, stencilBuffer, true);
+debug("Attach stencil using DEPTH_STENCIL_ATTACHMENT");
+testAttachment(gl.DEPTH_STENCIL_ATTACHMENT, stencilBuffer, true);
+debug("Attach depthStencil using DEPTH_STENCIL_ATTACHMENT");
+testAttachment(gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, false);
+debug("Attach depthStencil using DEPTH_ATTACHMENT");
+testAttachment(gl.DEPTH_ATTACHMENT, depthStencilBuffer, true);
+debug("Attach depthStencil using STENCIL_ATTACHMENT");
+testAttachment(gl.STENCIL_ATTACHMENT, depthStencilBuffer, true);
 
-        debug("Attach depth, then stencil, causing conflict");
-        testAttachments(gl.DEPTH_ATTACHMENT, depthBuffer, gl.STENCIL_ATTACHMENT, stencilBuffer, true);
-        debug("Attach stencil, then depth, causing conflict");
-        testAttachments(gl.STENCIL_ATTACHMENT, stencilBuffer, gl.DEPTH_ATTACHMENT, depthBuffer, true);
-        debug("Attach depth, then depthStencil, causing conflict");
-        testAttachments(gl.DEPTH_ATTACHMENT, depthBuffer, gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, true);
-        debug("Attach depthStencil, then depth, causing conflict");
-        testAttachments(gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, gl.DEPTH_ATTACHMENT, depthBuffer, true);
-        debug("Attach stencil, then depthStencil, causing conflict");
-        testAttachments(gl.DEPTH_ATTACHMENT, depthBuffer, gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, true);
-        debug("Attach depthStencil, then stencil, causing conflict");
-        testAttachments(gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, gl.STENCIL_ATTACHMENT, stencilBuffer, true);
+debug("Attach depth, then stencil, causing conflict");
+testAttachments(gl.DEPTH_ATTACHMENT, depthBuffer, gl.STENCIL_ATTACHMENT, stencilBuffer, true);
+debug("Attach stencil, then depth, causing conflict");
+testAttachments(gl.STENCIL_ATTACHMENT, stencilBuffer, gl.DEPTH_ATTACHMENT, depthBuffer, true);
+debug("Attach depth, then depthStencil, causing conflict");
+testAttachments(gl.DEPTH_ATTACHMENT, depthBuffer, gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, true);
+debug("Attach depthStencil, then depth, causing conflict");
+testAttachments(gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, gl.DEPTH_ATTACHMENT, depthBuffer, true);
+debug("Attach stencil, then depthStencil, causing conflict");
+testAttachments(gl.DEPTH_ATTACHMENT, depthBuffer, gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, true);
+debug("Attach depthStencil, then stencil, causing conflict");
+testAttachments(gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, gl.STENCIL_ATTACHMENT, stencilBuffer, true);
 
-        debug("Attach color renderbuffer with internalformat == RGBA4");
-        testColorRenderbuffer(gl.RGBA4);
+debug("Attach color renderbuffer with internalformat == RGBA4");
+testColorRenderbuffer(gl.RGBA4);
 
-        debug("Attach color renderbuffer with internalformat == RGB5_A1");
-        testColorRenderbuffer(gl.RGB5_A1);
+debug("Attach color renderbuffer with internalformat == RGB5_A1");
+testColorRenderbuffer(gl.RGB5_A1);
 
-        debug("Attach color renderbuffer with internalformat == RGB565");
-        testColorRenderbuffer(gl.RGB565);
+debug("Attach color renderbuffer with internalformat == RGB565");
+testColorRenderbuffer(gl.RGB565);
 
-        debug("Create and attach depthStencil renderbuffer");
-        testDepthStencilRenderbuffer();
-    }
-}
+debug("Create and attach depthStencil renderbuffer");
+testDepthStencilRenderbuffer();
 
 successfullyParsed = true;
 </script>
 
 <script src="../resources/js-test-post.js"></script>
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/framebuffer-test.html
+++ b/content/canvas/test/webgl/conformance/framebuffer-test.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL Framebuffer Test</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
@@ -162,11 +163,13 @@ if (!gl) {
             "binding default (null) framebuffer should succeed.");
 }
 
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
+<script>
+</script>
 
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/get-active-test.html
+++ b/content/canvas/test/webgl/conformance/get-active-test.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (C) 2011 Apple Computer, Inc.  All rights reserved.
+Copyright (C) 2009 Apple Computer, Inc.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
@@ -17,20 +17,19 @@ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHA
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
+
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
--- a/content/canvas/test/webgl/conformance/gl-bind-attrib-location-test.html
+++ b/content/canvas/test/webgl/conformance/gl-bind-attrib-location-test.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL BindAttribLocation Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
@@ -22,18 +23,19 @@ attribute vec4 vColor;
 varying vec4 color;
 void main()
 {
   gl_Position = vPosition;
   color = vColor;
 }
 </script>
 <script id="fshader" type="text/something-not-javascript">
-precision mediump float;
-
+#ifdef GL_ES
+precision highp float;
+#endif
 varying vec4 color;
 void main()
 {
   gl_FragColor = color;
 }
 </script>
 <script>
 description("This test ensures WebGL implementations don't allow names that start with 'gl_' when calling bindAttribLocation.");
--- a/content/canvas/test/webgl/conformance/gl-clear.html
+++ b/content/canvas/test/webgl/conformance/gl-clear.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
   found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL clear conformance test.</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 </head>
 <body>
 <canvas id="example" width="1" height="1" style="width: 256px; height: 48px;"></canvas>
--- a/content/canvas/test/webgl/conformance/gl-drawelements.html
+++ b/content/canvas/test/webgl/conformance/gl-drawelements.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
 -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
   <head>
-<meta charset="utf-8">
     <title>WebGL drawElements Test</title>
     <link rel="stylesheet" href="../resources/js-test-style.css"/>
     <script src="../resources/js-test-pre.js"></script>
     <script src="resources/webgl-test.js"> </script>
     <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 </head>
 <body>
 <canvas id="example" width="50" height="50"></canvas>
@@ -85,12 +85,16 @@ found in the LICENSE file.
                 gl.TRIANGLES, 3, gl.UNSIGNED_INT,
                 gl.INVALID_ENUM, "gl.DrawElements should return INVALID_ENUM with UNSIGNED_INT");
 
        }
 
        init();
        successfullyParsed = true;
     </script>
+</body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/gl-enable-enum-test.html
+++ b/content/canvas/test/webgl/conformance/gl-enable-enum-test.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL gl.ENABLE enums Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
@@ -124,10 +125,13 @@ if (!gl) {
 }
 
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/gl-enable-vertex-attrib.html
+++ b/content/canvas/test/webgl/conformance/gl-enable-vertex-attrib.html
@@ -1,17 +1,16 @@
 <!--
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 -->
 <!DOCTYPE html>
 <html>
   <head>
-<meta charset="utf-8">
     <title>WebGL Enable Vertex Attrib Test</title>
     <link rel="stylesheet" href="../resources/js-test-style.css"/>
     <script src="../resources/js-test-pre.js"></script>
     <script src="resources/webgl-test.js"> </script>
 </head>
 <body>
 <canvas id="example" width="50" height="50">
 </canvas>
@@ -45,13 +44,17 @@ gl.vertexAttribPointer(0, 3, gl.FLOAT, f
 gl.enableVertexAttribArray(3);
 glErrorShouldBe(gl, gl.NO_ERROR);
 
 gl.drawArrays(gl.TRIANGLES, 0, 3);
 glErrorShouldBe(gl, gl.INVALID_OPERATION);
 
 successfullyParsed = true;
 </script>
+</body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
--- a/content/canvas/test/webgl/conformance/gl-enum-tests.html
+++ b/content/canvas/test/webgl/conformance/gl-enum-tests.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL gl enums Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
@@ -77,11 +78,14 @@ if (!gl) {
 }
 
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
deleted file mode 100755
--- a/content/canvas/test/webgl/conformance/gl-fragcoord.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
-Use of this source code is governed by a BSD-style license that can be
-found in the LICENSE file.
- -->
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-  <title>gl-fragcoord Test</title>
-  <link rel="stylesheet" href="../resources/js-test-style.css"/>
-  <script src="../resources/js-test-pre.js"></script>
-  <script src="resources/webgl-test.js"> </script>
-  <script src="resources/webgl-test-utils.js"> </script>
-</head>
-<body>
-<canvas id="example" width="32" height="32">
-</canvas>
-<div id="description"></div>
-<div id="console"></div>
-  <script id="vshader" type="x-shader/x-vertex">
-    attribute vec4 vPosition;
-    void main()
-    {
-      gl_Position = vPosition;
-    }
-  </script>
-
-  <script id="fshader" type="x-shader/x-fragment">
-    precision mediump float;
-    void main()
-    {
-      gl_FragColor = vec4(
-        floor(gl_FragCoord.x * 4.0 / 32.0) / 4.0,
-        floor(gl_FragCoord.y * 4.0 / 32.0) / 4.0,
-        floor(gl_FragCoord.z * 4.0) / 4.0,
-        1);
-    }
-  </script>
-
-  <script>
-    function init()
-    {
-      if (window.initNonKhronosFramework) {
-        window.initNonKhronosFramework(false);
-      }
-
-      wtu = WebGLTestUtils;
-      gl = initWebGL("example", "vshader", "fshader", [ "vPosition"], [ 0, 0, 0, 1 ], 1);
-
-      var vertexObject = gl.createBuffer();
-      gl.bindBuffer(gl.ARRAY_BUFFER, vertexObject);
-      gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(
-        [-1, -1, -1,  1, -1,  0, -1,  1,  0,
-         -1,  1,  0,  1, -1,  0,  1,  1,  1]),
-                    gl.STATIC_DRAW);
-      gl.enableVertexAttribArray(0);
-      gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);
-
-      gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
-      gl.drawArrays(gl.TRIANGLES, 0, 6);
-
-      for (var xx = 0; xx < 32; xx += 4) {
-        for (var yy = 0; yy < 32; yy += 4) {
-          var zz = (xx / 64) + (yy / 64);
-          var color = [
-             Math.floor(Math.floor(xx * 4.0 / 32.0) / 4 * 256),
-             Math.floor(Math.floor(yy * 4.0 / 32.0) / 4 * 256),
-             Math.floor(Math.floor(zz * 4.0) / 4 * 256)
-          ];
-          var msg = "should be " + color;
-          wtu.checkCanvasRect(
-              gl, xx, yy, 1, 1, color, msg, 4);
-        }
-      }
-    }
-
-    init();
-    successfullyParsed = true;
-  </script>
-<script src="../resources/js-test-post.js"></script>
-
-</body>
-</html>
--- a/content/canvas/test/webgl/conformance/gl-get-active-attribute.html
+++ b/content/canvas/test/webgl/conformance/gl-get-active-attribute.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL getActiveAttrib conformance test.</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 </head>
 <body>
 <canvas id="example" width="16" height="16"></canvas>
@@ -72,14 +72,18 @@ for (var tt = 0; tt < tests.length; ++tt
   }
   if (!found) {
     testFailed("attrib 'attr0' not found");
   }
 }
 
 successfullyParsed = true;
 </script>
+</body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
 
--- a/content/canvas/test/webgl/conformance/gl-get-active-uniform.html
+++ b/content/canvas/test/webgl/conformance/gl-get-active-uniform.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL getActiveUniform conformance test.</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 </head>
 <body>
 <canvas id="example" width="16" height="16"></canvas>
@@ -133,14 +133,18 @@ gl.useProgram(p2);
 gl.uniform1f(l2, 1);
 glErrorShouldBe(gl, gl.NO_ERROR, "no errors setting uniform 0");
 gl.uniform1f(l1, 2);
 glErrorShouldBe(gl, gl.INVALID_OPERATION,
                 "setting a uniform using a location from another program");
 
 successfullyParsed = true;
 </script>
+</body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
 
--- a/content/canvas/test/webgl/conformance/gl-get-calls.html
+++ b/content/canvas/test/webgl/conformance/gl-get-calls.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (C) 2011 Apple Computer, Inc.  All rights reserved.
+Copyright (C) 2009 Apple Computer, Inc.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
@@ -18,20 +18,19 @@ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, I
 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
 
-<!DOCTYPE html>
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL gl calls Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
@@ -143,10 +142,13 @@ else {
 }
 
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
deleted file mode 100644
--- a/content/canvas/test/webgl/conformance/gl-geterror.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!--
-Copyright (c) 2009 The Chromium Authors. All rights reserved.
-Use of this source code is governed by a BSD-style license that can be
-  found in the LICENSE file.
- -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-  "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<title>WebGL get error conformance test.</title>
-<link rel="stylesheet" href="../resources/js-test-style.css"/>
-<script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
-<script src="../resources/js-test-pre.js"></script>
-<script src="resources/webgl-test.js"> </script>
-<script src="resources/webgl-test-utils.js"> </script>
-</head>
-<body>
-<canvas id="example" width="1" height="1" style="width: 256px; height: 48px;"></canvas>
-<div id="description"></div><div id="console"></div>
-<script>
-description("Test getError.");
-var wtu = WebGLTestUtils;
-var canvas = document.getElementById("example");
-var gl = wtu.create3DContext(canvas);
-var tex = gl.createTexture();
-gl.bindTexture(gl.TEXTURE_2D, tex);
-
-gl.enable(desktopGL.ALPHA_TEST);
-glErrorShouldBe(gl, gl.INVALID_ENUM, "should generate INVALID_ENUM");
-gl.viewport(-1, -1, -1, -1);
-glErrorShouldBe(gl, gl.INVALID_VALUE, "should generate INVALID_VALUE");
-gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
-glErrorShouldBe(gl, gl.INVALID_OPERATION, "should generate INVALID_OPERATION");
-
-// Generate 2 errors of each type for 6 total possible errors.
-// The OpenGL ES 2.0 spec section 2.5 says the implementation is allowed to
-// either return the first error or many errors in an unspecied order.
-gl.viewport(-1, -1, -1, -1);
-gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
-gl.enable(desktopGL.ALPHA_TEST);
-gl.viewport(-1, -1, -1, -1);
-gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
-// Note: This error is specifically last because we know it will be synthasized
-// by WebGL at least when implemented on top of Desktop OpenGL
-gl.enable(desktopGL.ALPHA_TEST);
-
-var err1 = gl.getError();
-var err2 = gl.getError();
-var err3 = gl.getError();
-var err4 = gl.getError();
-var err5 = gl.getError();
-var err6 = gl.getError();
-
-debug("");
-if (err2 == gl.NO_ERROR) {
-  debug("This WebGL implementation looks like it uses the 'first error' method");
-  debug("There should be 1 error, the first one generated");
-  shouldBeTrue('err1 == gl.INVALID_VALUE && err2 == gl.NO_ERROR && err3 == gl.NO_ERROR');
-} else {
-  debug("This WebGL implementation looks like it uses the many error method");
-  debug("Check is that at least one of the errors is the first error");
-  shouldBeTrue('err1 == gl.INVALID_VALUE || ' +
-               'err2 == gl.INVALID_VALUE || ' +
-               'err3 == gl.INVALID_VALUE || ' +
-               'err4 == gl.INVALID_VALUE || ' +
-               'err5 == gl.INVALID_VALUE || ' +
-               'err6 == gl.INVALID_VALUE');
-  shouldBeTrue('gl.getError() == gl.NO_ERROR');
-}
-
-debug("");
-successfullyParsed = true;
-</script>
-<script src="../resources/js-test-post.js"></script>
-</body>
-</html>
-
--- a/content/canvas/test/webgl/conformance/gl-getshadersource.html
+++ b/content/canvas/test/webgl/conformance/gl-getshadersource.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
    <title>WebGL getShaderSource conformance test.</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 </head>
 <body>
 <canvas id="example" width="4" height="4" style="width: 40px; height: 30px;"></canvas>
@@ -26,14 +27,19 @@ var gl = wtu.create3DContext(canvas);
 var original = document.getElementById("vshader").text;
 var shader = gl.createShader(gl.VERTEX_SHADER);
 gl.shaderSource(shader, original);
 var source = gl.getShaderSource(shader);
 shouldBe("source", "original");
 glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors.");
 successfullyParsed = true;
 </script>
+</body>
+</body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
 
--- a/content/canvas/test/webgl/conformance/gl-getstring.html
+++ b/content/canvas/test/webgl/conformance/gl-getstring.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL gl.getParameter Strings Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
@@ -49,10 +50,13 @@ function checkPrefix(expected, enum_val)
 }
 
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/gl-min-attribs.html
+++ b/content/canvas/test/webgl/conformance/gl-min-attribs.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL the minimum number of attributes are supported.</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 </head>
 <body>
 <canvas id="example" width="4" height="4" style="width: 40px; height: 30px;"></canvas>
@@ -30,17 +30,19 @@ varying vec4 color;
 void main()
 {
     gl_Position = vPosition;
     color = v0 + v1 + v2 + v3 + v4 + v5 + v6;
 }
 </script>
 
 <script id="fshader" type="x-shader/x-fragment">
+#ifdef GL_ES
 precision mediump float;
+#endif
 varying vec4 color;
 void main()
 {
     gl_FragColor = color;
 }
 </script>
 <script>
 var wtu = WebGLTestUtils;
@@ -75,12 +77,15 @@ glErrorShouldBe(gl, gl.NO_ERROR, "Should
 wtu.checkCanvasRect(gl, 0, 0, canvas.width, canvas.height, [255, 127, 64, 32], "Should render 255,127,64,32 (+/-1)", 1);
 
 successfullyParsed = true;
 
 </script>
 </body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
 
new file mode 100644
--- /dev/null
+++ b/content/canvas/test/webgl/conformance/gl-min-textures-unroll.html
@@ -0,0 +1,86 @@
+<!--
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+ -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>WebGL the minimum number of uniforms are supported.</title>
+<link rel="stylesheet" href="../resources/js-test-style.css"/>
+<script src="../resources/js-test-pre.js"></script>
+<script src="resources/webgl-test.js"> </script>
+<script src="resources/webgl-test-utils.js"> </script>
+</head>
+<body>
+<canvas id="example" width="4" height="4" style="width: 40px; height: 30px;"></canvas>
+<div id="description"></div>
+<div id="console"></div>
+<script id="vshader" type="x-shader/x-vertex">
+attribute vec4 vPosition;
+void main()
+{
+    gl_Position = vPosition;
+}
+</script>
+
+<script id="fshader" type="x-shader/x-fragment">
+#define NUM_TEXTURES 8 // See spec
+#ifdef GL_ES
+precision mediump float;
+#endif
+uniform sampler2D uni[8];
+void main()
+{
+    vec4 c = vec4(0,0,0,0);
+    c += texture2D(uni[0], vec2(0.5, 0.5));
+    c += texture2D(uni[1], vec2(0.5, 0.5));
+    c += texture2D(uni[2], vec2(0.5, 0.5));
+    c += texture2D(uni[3], vec2(0.5, 0.5));
+    c += texture2D(uni[4], vec2(0.5, 0.5));
+    c += texture2D(uni[5], vec2(0.5, 0.5));
+    c += texture2D(uni[6], vec2(0.5, 0.5));
+    c += texture2D(uni[7], vec2(0.5, 0.5));
+    gl_FragColor = c;
+}
+</script>
+<script>
+var wtu = WebGLTestUtils;
+var canvas = document.getElementById("example");
+var gl = wtu.create3DContext(canvas);
+var program = wtu.setupTexturedQuad(gl);
+
+//------------------------------------------------------------------------------
+var program = wtu.setupProgram(
+    gl,
+    [wtu.loadShaderFromScript(gl, 'vshader', gl.VERTEX_SHADER),
+     wtu.loadShaderFromScript(gl, 'fshader', gl.FRAGMENT_SHADER)],
+    ['vPosition'], [0]);
+
+for (var ii = 0; ii < 8; ++ii) {
+  var loc = gl.getUniformLocation(program, "uni[" + ii + "]");
+  gl.activeTexture(gl.TEXTURE0 + ii);
+  var tex = gl.createTexture();
+  wtu.fillTexture(gl, tex, 1, 1, [32, 16, 8, ii * 9], 0);
+  gl.uniform1i(loc, ii);
+}
+
+wtu.drawQuad(gl);
+glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors from setup.");
+wtu.checkCanvas(gl, [255, 128, 64, 252],
+                "Should render using all texture units");
+
+successfullyParsed = true;
+
+</script>
+</body>
+<script src="../resources/js-test-post.js"></script>
+
+<script>
+</script>
+
+</body>
+</html>
+
+
--- a/content/canvas/test/webgl/conformance/gl-min-textures.html
+++ b/content/canvas/test/webgl/conformance/gl-min-textures.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL the minimum number of uniforms are supported.</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 </head>
 <body>
 <canvas id="example" width="4" height="4" style="width: 40px; height: 30px;"></canvas>
@@ -22,17 +22,19 @@ attribute vec4 vPosition;
 void main()
 {
     gl_Position = vPosition;
 }
 </script>
 
 <script id="fshader" type="x-shader/x-fragment">
 #define NUM_TEXTURES 8 // See spec
+#ifdef GL_ES
 precision mediump float;
+#endif
 uniform sampler2D uni[8];
 void main()
 {
     vec4 c = vec4(0,0,0,0);
     for (int ii = 0; ii < NUM_TEXTURES; ++ii) {
       c += texture2D(uni[ii], vec2(0.5, 0.5));
     }
     gl_FragColor = c;
@@ -62,14 +64,18 @@ for (var ii = 0; ii < 8; ++ii) {
 wtu.drawQuad(gl);
 glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors from setup.");
 wtu.checkCanvas(gl, [255, 128, 64, 252],
                 "Should render using all texture units");
 
 successfullyParsed = true;
 
 </script>
+</body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
 
--- a/content/canvas/test/webgl/conformance/gl-min-uniforms.html
+++ b/content/canvas/test/webgl/conformance/gl-min-uniforms.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL the minimum number of uniforms are supported.</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 </head>
 <body>
 <canvas id="example" width="4" height="4" style="width: 40px; height: 30px;"></canvas>
@@ -29,33 +29,37 @@ void main()
     for (int ii = 0; ii < NUM_UNIFORMS; ++ii) {
       c += uni[ii];
     }
     color = c;
 }
 </script>
 
 <script id="fshader" type="x-shader/x-fragment">
+#ifdef GL_ES
 precision mediump float;
+#endif
 varying vec4 color;
 void main()
 {
     gl_FragColor = color;
 }
 </script>
 <script id="vshader2" type="x-shader/x-vertex">
 attribute vec4 vPosition;
 void main()
 {
     gl_Position = vPosition;
 }
 </script>
 
 <script id="fshader2" type="x-shader/x-fragment">
+#ifdef GL_ES
 precision mediump float;
+#endif
 #define NUM_UNIFORMS 16 // See spec
 uniform vec4 uni[NUM_UNIFORMS];
 void main()
 {
     vec4 c = vec4(0,0,0,0);
     for (int ii = 0; ii < NUM_UNIFORMS; ++ii) {
        c += uni[ii];
     }
@@ -99,14 +103,18 @@ for (var ii = 0; ii < 16; ++ii) {
 glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors from setup.");
 wtu.drawQuad(gl);
 glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors from setup.");
 wtu.checkCanvasRect(gl, 0, 0, canvas.width, canvas.height, [32, 64, 127, 255], "Should render 32,64,127,255 (+/-1)", 1);
 
 successfullyParsed = true;
 
 </script>
+</body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
 
--- a/content/canvas/test/webgl/conformance/gl-object-get-calls.html
+++ b/content/canvas/test/webgl/conformance/gl-object-get-calls.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (C) 2011 Apple Computer, Inc.  All rights reserved.
+Copyright (C) 2009 Apple Computer, Inc.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
@@ -17,20 +17,18 @@ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHA
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
@@ -256,19 +254,19 @@ shouldBe('gl.getVertexAttribOffset(1, gl
 gl.disableVertexAttribArray(1);
 shouldBe('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_ENABLED)', 'false');
 gl.vertexAttrib4f(1, 5, 6, 7, 8);
 shouldBe('gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB)', '[5, 6, 7, 8]');
 glErrorShouldBe(gl, gl.NO_ERROR);
 
 // Test cases where name == 0
 gl.deleteTexture(texture);
-shouldBe('gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE)', 'gl.NONE');
+shouldBeNull('gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME)');
 gl.deleteRenderbuffer(renderbuffer);
-shouldBe('gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE)', 'gl.NONE');
+shouldBeNull('gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME)');
 gl.deleteBuffer(buffer);
 shouldBeNull('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)');
 glErrorShouldBe(gl, gl.NO_ERROR);
 
 successfullyParsed = true;
 </script>
 
 <script src="../resources/js-test-post.js"></script>
--- a/content/canvas/test/webgl/conformance/gl-pixelstorei.html
+++ b/content/canvas/test/webgl/conformance/gl-pixelstorei.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
 -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL pixelStorei Test</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 </head>
 <body>
 <canvas id="example" width="50" height="50"></canvas>
@@ -114,12 +114,16 @@ function init() {
     assertMsg(gl.getParameter(gl.PACK_ALIGNMENT) == table[ii],
         "PACK_ALIGNMENT is " + table[ii]);
   }
 }
 
 init();
 successfullyParsed = true;
 </script>
+</body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/gl-scissor-test.html
+++ b/content/canvas/test/webgl/conformance/gl-scissor-test.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL Scissor Test</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../../debug/webgl-debug.js"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test-utils.js"></script>
 </head>
 <body>
@@ -64,10 +65,13 @@ if (!gl) {
 }
 
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/gl-shader-test.html
+++ b/content/canvas/test/webgl/conformance/gl-shader-test.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
 -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL ShaderL Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
@@ -39,10 +40,13 @@ if (!gl) {
 }
 
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/gl-teximage.html
+++ b/content/canvas/test/webgl/conformance/gl-teximage.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
   found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL texImage2D conformance test.</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 </head>
 <body>
 <canvas id="example" width="256" height="16" style="width: 256px; height: 48px;"></canvas>
--- a/content/canvas/test/webgl/conformance/gl-uniform-arrays.html
+++ b/content/canvas/test/webgl/conformance/gl-uniform-arrays.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL uniform array Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
@@ -20,17 +21,19 @@ found in the LICENSE file.
     attribute vec4 vPosition;
     void main()
     {
         gl_Position = vPosition;
     }
 </script>
 
 <script id="fshader" type="x-shader/x-fragment">
+    #ifdef GL_ES
     precision mediump float;
+    #endif
     uniform $type color[3];
     void main()
     {
         gl_FragColor = vec4(color[0]$elem, color[1]$elem, color[2]$elem, 1);
     }
 </script>
 <script>
 function loadShader(ctx, shaderType, shaderSource) {
@@ -293,10 +296,13 @@ for (var tt = 0; tt < typeInfos.length; 
                   "can call gl.useProgram(null)");
 }
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/gl-uniform-bool.html
+++ b/content/canvas/test/webgl/conformance/gl-uniform-bool.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL uniformMatrix Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
@@ -47,10 +48,13 @@ glErrorShouldBe(gl, gl.NO_ERROR,
                 "should be able to set bool with gl.uniform1f");
 
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/gl-uniformmatrix4fv.html
+++ b/content/canvas/test/webgl/conformance/gl-uniformmatrix4fv.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL uniformMatrix Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
--- a/content/canvas/test/webgl/conformance/gl-unknown-uniform.html
+++ b/content/canvas/test/webgl/conformance/gl-unknown-uniform.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
 -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL Unknown Uniform Conformance Test</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
@@ -56,10 +57,13 @@ if (!gl) {
 }
 
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/gl-vertex-attrib-zero-issues.html
+++ b/content/canvas/test/webgl/conformance/gl-vertex-attrib-zero-issues.html
@@ -1,17 +1,16 @@
 <!--
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 -->
 <!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL Enable Vertex Attrib Zero Test</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 </head>
 <body>
 <canvas id="example" width="50" height="50">
@@ -85,11 +84,14 @@ for (var ii = 0; ii < 5; ++ii) {
 }
 
 wtu.checkCanvas(gl, [0, 0, 0, 0], "canvas should be 0, 0, 0, 0");
 
 successfullyParsed = true;
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
--- a/content/canvas/test/webgl/conformance/gl-vertex-attrib.html
+++ b/content/canvas/test/webgl/conformance/gl-vertex-attrib.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL vertexAttrib Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
deleted file mode 100755
--- a/content/canvas/test/webgl/conformance/gl-vertexattribpointer-offsets.html
+++ /dev/null
@@ -1,192 +0,0 @@
-<!--
-Copyright (C) 2011 Apple Computer, Inc.  All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-
-<!DOCTYPE html>
-<html>
-  <head>
-<meta charset="utf-8">
-    <title>Rendering Test</title>
-    <link rel="stylesheet" href="../resources/js-test-style.css"/>
-    <script src="../resources/js-test-pre.js"></script>
-    <script src="resources/webgl-test.js"> </script>
-    <script src="resources/webgl-test-utils.js"> </script>
-</head>
-<body>
-<canvas id="example" width="50" height="50">
-There is supposed to be an example drawing here, but it's not important.
-</canvas>
-<div id="description"></div>
-<div id="console"></div>
-    <script id="vshader" type="x-shader/x-vertex">
-        attribute vec4 vPosition;
-        void main()
-        {
-            gl_Position = vPosition;
-        }
-    </script>
-
-    <script id="fshader" type="x-shader/x-fragment">
-        precision mediump float;
-        uniform vec4 color;
-        void main()
-        {
-            gl_FragColor = color;
-        }
-    </script>
-
-    <script>
-        function fail(x,y, buf, shouldBe)
-        {
-            var i = (y*50+x) * 4;
-            var reason = "pixel at ("+x+","+y+") is ("+buf[i]+","+buf[i+1]+","+buf[i+2]+","+buf[i+3]+"), should be "+shouldBe;
-            testFailed(reason);
-        }
-
-        function pass()
-        {
-            testPassed("drawing is correct");
-        }
-
-        function init()
-        {
-            if (window.initNonKhronosFramework) {
-                window.initNonKhronosFramework(false);
-            }
-
-            wtu = WebGLTestUtils;
-            gl = initWebGL("example", "vshader", "fshader", [ "vPosition"], [ 0, 0, 0, 1 ], 1);
-
-            var tests = [
-              { data: new Float32Array([ 0, 1, 0, 1, 0, 0, 0, 0, 0 ]),
-                type: gl.FLOAT,
-                componentSize: 4,
-                normalize: false,
-              },
-              { data: new Float32Array([ 0, 1, 0, 1, 0, 0, 0, 0, 0 ]),
-                type: gl.FLOAT,
-                componentSize: 4,
-                normalize: false,
-              },
-              { data: new Uint16Array([ 0, 32767, 0, 32767, 0, 0, 0, 0, 0 ]),
-                type: gl.SHORT,
-                componentSize: 2,
-                normalize: true,
-              },
-              { data: new Uint16Array([ 0, 65535, 0, 65535, 0, 0, 0, 0, 0 ]),
-                type: gl.UNSIGNED_SHORT,
-                componentSize: 2,
-                normalize: true,
-              },
-              { data: new Uint16Array([ 0, 1, 0, 1, 0, 0, 0, 0, 0 ]),
-                type: gl.UNSIGNED_SHORT,
-                componentSize: 2,
-                normalize: false,
-              },
-              { data: new Uint16Array([ 0, 1, 0, 1, 0, 0, 0, 0, 0 ]),
-                type: gl.SHORT,
-                componentSize: 2,
-                normalize: false,
-              },
-              { data: new Uint8Array([ 0, 127, 0, 127, 0, 0, 0, 0, 0 ]),
-                type: gl.BYTE,
-                componentSize: 1,
-                normalize: true,
-              },
-              { data: new Uint8Array([ 0, 255, 0, 255, 0, 0, 0, 0, 0 ]),
-                type: gl.UNSIGNED_BYTE,
-                componentSize: 1,
-                normalize: true,
-              },
-              { data: new Uint8Array([ 0, 1, 0, 1, 0, 0, 0, 0, 0 ]),
-                type: gl.BYTE,
-                componentSize: 1,
-                normalize: false,
-              },
-              { data: new Uint8Array([ 0, 1, 0, 1, 0, 0, 0, 0, 0 ]),
-                type: gl.UNSIGNED_BYTE,
-                componentSize: 1,
-                normalize: false,
-              }
-            ];
-
-            var vertexObject = gl.createBuffer();
-            gl.bindBuffer(gl.ARRAY_BUFFER, vertexObject);
-            gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
-            gl.enableVertexAttribArray(0);
-
-            var colorLoc = gl.getUniformLocation(gl.program, "color");
-            var kNumVerts = 3;
-            var kNumComponents = 3;
-
-            var count = 0;
-            for (var tt = 0; tt < tests.length; ++tt) {
-              var test = tests[tt];
-              for (var oo = 0; oo < 3; ++oo) {
-                for (var ss = 0; ss < 3; ++ss) {
-                  var offset = (oo + 1) * test.componentSize;
-                  var color = (count % 2) ? [1, 0, 0, 1] : [0, 1, 0, 1];
-                  var stride = test.componentSize * kNumComponents + test.componentSize * ss;
-                  debug("");
-                  debug("check with " + wtu.glEnumToString(gl, test.type) + " at offset: " + offset + " with stride:" + stride + " normalize: " + test.normalize);
-                  gl.uniform4fv(colorLoc, color);
-                  var data = new Uint8Array(test.componentSize * kNumVerts * kNumComponents + stride * (kNumVerts - 1));
-                  var view = new Uint8Array(test.data.buffer);
-                  var size = test.componentSize * kNumComponents;
-                  for (var jj = 0; jj < kNumVerts; ++jj) {
-                    var off1 = jj * size;
-                    var off2 = jj * stride;
-                    for (var zz = 0; zz < size; ++zz) {
-                      data[off2 + zz] = view[off1 + zz];
-                    }
-                  }
-                  gl.bufferSubData(gl.ARRAY_BUFFER, offset, data);
-                  gl.vertexAttribPointer(0, 3, test.type, test.normalize, stride, offset);
-                  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
-                  gl.drawArrays(gl.TRIANGLES, 0, 3);
-
-                  var buf = new Uint8Array(50 * 50 * 4);
-                  gl.readPixels(0, 0, 50, 50, gl.RGBA, gl.UNSIGNED_BYTE, buf);
-
-                  var black = [0, 0, 0, 255];
-                  var other = [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255];
-                  var otherMsg = "should be " + ((count % 2) ? "red" : "green")
-                  wtu.checkCanvasRect(gl, 0, 0, 1, 1, black, "should be black", 0);
-                  wtu.checkCanvasRect(gl, 0, 49, 1, 1, black, "should be black", 0);
-                  wtu.checkCanvasRect(gl, 26, 40, 1, 1, other, otherMsg, 0);
-                  wtu.checkCanvasRect(gl, 26, 27, 1, 1, other, otherMsg, 0);
-                  wtu.checkCanvasRect(gl, 40, 27, 1, 1, other, otherMsg, 0);
-                  ++count;
-                }
-              }
-            }
-       }
-
-       init();
-       successfullyParsed = true;
-    </script>
-<script src="../resources/js-test-post.js"></script>
-
-</body>
-</html>
--- a/content/canvas/test/webgl/conformance/gl-vertexattribpointer.html
+++ b/content/canvas/test/webgl/conformance/gl-vertexattribpointer.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL vertexAttribPointer Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 <script src="resources/webgl-test-utils.js"></script>
 </head>
 <body>
@@ -124,10 +125,13 @@ if (!gl) {
 }
 
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/glsl-2types-of-textures-on-same-unit.html
+++ b/content/canvas/test/webgl/conformance/glsl-2types-of-textures-on-same-unit.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
   <head>
-<meta charset="utf-8">
     <title>WebGL GLSL 2 types of textures on same unit conformance test.</title>
     <link rel="stylesheet" href="../resources/js-test-style.css"/>
     <script src="../resources/js-test-pre.js"></script>
     <script src="resources/webgl-test.js"> </script>
     <script src="../../debug/webgl-debug.js"> </script>
 </head>
 <body>
 <canvas id="example" width="2" height="2" style="width: 40px; height: 40px;"></canvas>
@@ -25,18 +25,19 @@ varying vec2 texCoord;
 void main()
 {
   gl_Position = vPosition;
   texCoord = texCoord0;
 }
 </script>
 
 <script id="fshader" type="x-shader/x-fragment">
-precision mediump float;
-
+#ifdef GL_ES
+precision highp float;
+#endif
 uniform sampler2D tex2d;
 uniform samplerCube texCube;
 varying vec2 texCoord;
 void main()
 {
   gl_FragColor =  texture2D(tex2d, texCoord) +
                   textureCube(texCube, vec3(0,1,0));
 }
@@ -125,13 +126,17 @@ function init()
     glErrorShouldBe(gl, gl.INVALID_OPERATION,
               "drawing with 2 different targets on the same texture unit should generate INVALID_VALUE");
   }
 }
 
 init();
 successfullyParsed = true;
 </script>
+</body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
--- a/content/canvas/test/webgl/conformance/glsl-conformance.html
+++ b/content/canvas/test/webgl/conformance/glsl-conformance.html
@@ -1,17 +1,18 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
 -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL GLSL Conformance Tests</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test-utils.js"></script>
 </head>
 <body>
 <div id="description"></div>
@@ -28,18 +29,17 @@ precision mediump float;
 void main()
 {
     gl_FragColor = vec4(1.0,0.0,0.0,1.0);
 }
 </script>
 <script id="fshaderWithPrecision" type="text/something-not-javascript">
 void main()
 {
-    mediump vec4 color = vec4(1.0, 0.0, 0.0, 1.0);
-    gl_FragColor = color;
+    gl_FragColor = mediump vec4(1.0,0.0,0.0,1.0);
 }
 </script>
 <script id="vshaderWithDefaultPrecision" type="text/something-not-javascript">
 precision mediump float;
 attribute vec4 vPosition;
 void main()
 {
     gl_Position = vPosition;
@@ -186,17 +186,17 @@ void main()
 {
     gl_Position = _webgl_vPosition;
 }
 </script>
 <script id="vshaderWithImplicitVec3Cast" type="text/something-not-javascript">
 attribute vec4 vPosition;
 void main()
 {
-    mediump vec3 k = vec3(1, 2, 3);
+    highp vec3 k = vec3(1, 2, 3);
     gl_Position = k;
 }
 </script>
 <script id="vshaderWithExplicitIntCast" type="text/something-not-javascript">
 attribute vec4 vPosition;
 void main()
 {
     int k = 123;
@@ -302,153 +302,16 @@ void main()
 </script>
 <script id="fshaderWithNonASCIIErrorDirective" type="text/something-not-javascript">
 #error ͂`rbhhł͂Ȃ // will return INVALID_VALUE. See WebGL 6.18
 void main()
 {
     gl_FragColor = vec4(0,0,0,0);
 }
 </script>
-<script id="fshaderWithFunctionRecursion" type="text/something-not-javascript">
-void a();
-void b();
-void main()
-{
-    a();
-}
-void a()
-{
-    b();
-}
-void b()
-{
-    a();
-}
-</script>
-<script id="fshaderWithIntReturnValue" type="text/something-not-javascript">
-int functionResult();
-
-void main()
-{
-    int r = functionResult();
-    gl_FragColor = vec4(r, r, r, r);
-}
-
-int functionResult()
-{
-    return 1;
-}
-</script>
-<script id="fshaderWithIVec2ReturnValue" type="text/something-not-javascript">
-ivec2 functionResult();
-
-void main()
-{
-    ivec2 r = functionResult();
-    gl_FragColor = vec4(r.x, r.y, r.x, r.y);
-}
-
-ivec2 functionResult()
-{
-    return ivec2(1, 1);
-}
-</script>
-<script id="fshaderWithIVec3ReturnValue" type="text/something-not-javascript">
-ivec3 functionResult();
-
-void main()
-{
-    ivec3 r = functionResult();
-    gl_FragColor = vec4(r.x, r.y, r.z, r.x);
-}
-
-ivec3 functionResult()
-{
-    return ivec3(1, 1, 1);
-}
-</script>
-<script id="fshaderWithIVec4ReturnValue" type="text/something-not-javascript">
-ivec4 functionResult();
-
-void main()
-{
-    ivec4 r = functionResult();
-    gl_FragColor = vec4(r.x, r.y, r.z, r.w);
-}
-
-ivec4 functionResult()
-{
-    return ivec4(1, 1, 1, 1);
-}
-
-</script>
-<script id="fshaderWithFloatReturnValue" type="text/something-not-javascript">
-precision mediump float;
-
-float functionResult();
-
-void main()
-{
-    float r = functionResult();
-    gl_FragColor = vec4(r, r, r, r);
-}
-
-float functionResult()
-{
-    return 1.0;
-}
-</script>
-<script id="fshaderWithVec2ReturnValue" type="text/something-not-javascript">
-precision mediump float;
-
-vec2 functionResult();
-
-void main()
-{
-    vec2 r = functionResult();
-    gl_FragColor = vec4(r.x, r.y, r.x, r.y);
-}
-
-vec2 functionResult()
-{
-    return vec2(1.0, 1.0);
-}
-</script>
-<script id="fshaderWithVec3ReturnValue" type="text/something-not-javascript">
-precision mediump float;
-
-vec3 functionResult();
-
-void main()
-{
-    vec3 r = functionResult();
-    gl_FragColor = vec4(r.x, r.y, r.z, r.x);
-}
-
-vec3 functionResult()
-{
-    return vec3(1.0, 1.0, 1.0);
-}
-</script>
-<script id="fshaderWithVec4ReturnValue" type="text/something-not-javascript">
-precision mediump float;
-
-vec4 functionResult();
-
-void main()
-{
-    vec4 r = functionResult();
-    gl_FragColor = vec4(r.x, r.y, r.z, r.w);
-}
-
-vec4 functionResult()
-{
-    return vec4(1.0, 1.0, 1.0, 1.0);
-}
-</script>
 <canvas id="canvas" width="2" height="2"> </canvas>
 <script>
 description("This test ensures WebGL implementations allow proper GLES2 shaders compile and improper ones fail.");
 
 debug("");
 debug("Canvas.getContext");
 
 var wtu = WebGLTestUtils;
@@ -660,44 +523,43 @@ if (!gl) {
     },
     { vShaderId: 'vshaderWithIncludeDirective',
       vShaderSuccess: false,
       fShaderId: 'fshader',
       fShaderSuccess: true,
       linkSuccess: false,
       passMsg: 'vertex shader uses #include should fail',
     },
-    { vShaderId: 'vshader',
-      vShaderSuccess: true,
-      fShaderId: 'fshaderWith257CharacterIdentifier',
-      fShaderSuccess: false,
-      linkSuccess: false,
-      passMsg: 'shader that uses 257 character identifier should fail',
-    },
-    { vShaderId: 'vshader',
-      vShaderSuccess: true,
-      fShaderId: 'fshaderWith256CharacterIdentifier',
-      fShaderSuccess: true,
-      linkSuccess: true,
-      passMsg: 'shader that uses 256 character identifier should succeed',
-    },
+    //{ vShaderId: 'vshader',
+    //  vShaderSuccess: true,
+    //  fShaderId: 'fshaderWith257CharacterIdentifier',
+    //  fShaderSuccess: false,
+    //  linkSuccess: false,
+    //  passMsg: 'shader that uses 257 character identifier should fail',
+    //},
+    //{ vShaderId: 'vshader',
+    //  vShaderSuccess: true,
+    //  fShaderId: 'fshaderWith256CharacterIdentifier',
+    //  fShaderSuccess: true,
+    //  linkSuccess: true,
+    //  passMsg: 'shader that uses 256 character identifier should succeed',
+    //},
     { vShaderId: 'vshader',
       vShaderSuccess: true,
       fShaderId: 'fshaderWithLongLine',
       fShaderSuccess: true,
       fShaderPrep: function(str) {
         function expand(str, re, replacement, count) {
           for (var ii = 0; ii < count; ++ii) {
             str = str.replace(re, replacement);
           }
           return str;
         }
         str = expand(str, new RegExp(" ", 'g'), "  ", 12);
-        var manyZeros = expand("0", new RegExp("0", 'g'), "00", 8).substring(2);
-        str = expand(str, new RegExp("0", 'g'), manyZeros, 1);
+        str = expand(str, new RegExp("0", 'g'), "00", 8);
         str = expand(str, new RegExp("fooo", 'g'), "fooofooo", 6);
         str = expand(str, new RegExp("long", 'g'), "longlong", 6);
         //debug("len:" + str.length);
         //debug(str);
         return str;
       },
       linkSuccess: true,
       passMsg: 'shader that uses long lines should succeed',
@@ -719,203 +581,113 @@ if (!gl) {
       passMsg: "error directive using quotes fails",
     },
     { vShaderId: 'vshader',
       vShaderSuccess: true,
       fShaderId: 'fshaderWithNonASCIIErrorDirective',
       fShaderSuccess: false,
       linkSuccess: false,
       passMsg: "error directive using characters outside of allowed set fails",
-    },
-    { vShaderId: 'vshader',
-      vShaderSuccess: true,
-      fShaderId: 'fshaderWithFunctionRecursion',
-      fShaderSuccess: false,
-      linkSuccess: false,
-      passMsg: "Shaders with recursive function calls should fail",
-    },
-    { vShaderId: 'vshader',
-      vShaderSuccess: true,
-      fShaderId: 'fshaderWithIntReturnValue',
-      fShaderSuccess: true,
-      linkSuccess: true,
-      passMsg: "Shader with int return value from function call should succeed",
-    },
-    { vShaderId: 'vshader',
-      vShaderSuccess: true,
-      fShaderId: 'fshaderWithIVec2ReturnValue',
-      fShaderSuccess: true,
-      linkSuccess: true,
-      passMsg: "Shader with ivec2 return value from function call should succeed",
-    },
-    { vShaderId: 'vshader',
-      vShaderSuccess: true,
-      fShaderId: 'fshaderWithIVec3ReturnValue',
-      fShaderSuccess: true,
-      linkSuccess: true,
-      passMsg: "Shader with ivec3 return value from function call should succeed",
-    },
-    { vShaderId: 'vshader',
-      vShaderSuccess: true,
-      fShaderId: 'fshaderWithIVec4ReturnValue',
-      fShaderSuccess: true,
-      linkSuccess: true,
-      passMsg: "Shader with ivec4 return value from function call should succeed",
-    },
-    { vShaderId: 'vshader',
-      vShaderSuccess: true,
-      fShaderId: 'fshaderWithFloatReturnValue',
-      fShaderSuccess: true,
-      linkSuccess: true,
-      passMsg: "Shader with float return value from function call should succeed",
-    },
-    { vShaderId: 'vshader',
-      vShaderSuccess: true,
-      fShaderId: 'fshaderWithVec2ReturnValue',
-      fShaderSuccess: true,
-      linkSuccess: true,
-      passMsg: "Shader with vec2 return value from function call should succeed",
-    },
-    { vShaderId: 'vshader',
-      vShaderSuccess: true,
-      fShaderId: 'fshaderWithVec3ReturnValue',
-      fShaderSuccess: true,
-      linkSuccess: true,
-      passMsg: "Shader with vec3 return value from function call should succeed",
-    },
-    { vShaderId: 'vshader',
-      vShaderSuccess: true,
-      fShaderId: 'fshaderWithVec4ReturnValue',
-      fShaderSuccess: true,
-      linkSuccess: true,
-      passMsg: "Shader with vec4 return value from function call should succeed",
-    },
+    }
   ];
 
   // Read in all the shader source.
   for (var ii = 0; ii < shaderInfo.length; ++ii) {
     var si = shaderInfo[ii];
     si.vShaderSource = document.getElementById(si.vShaderId).text;
     si.fShaderSource = document.getElementById(si.fShaderId).text;
   }
 
   // Add more tests from external file
   var simpleVertShader = document.getElementById('vshader').text;
   var simpleFragShader = document.getElementById('fshader').text;
 
   function addExternalShaders(filename, passMsg) {
-    var lines = wtu.readFileList(filename);
-    for (var ii = 0; ii < lines.length; ++ii) {
-      var info = {
-        vShaderId:      'vshader',
-        vShaderSource:  simpleVertShader,
-        vShaderSuccess: true,
-        fShaderId:      'fshader',
-        fShaderSource:  simpleFragShader,
-        fShaderSuccess: true,
-        linkSuccess:    true,
-      };
-
-      var line = lines[ii];
-      var files = line.split(/ +/);
-      var passMsg = "";
-      for (var jj = 0; jj < files.length; ++jj) {
-        var file = files[jj];
-        var shaderSource = wtu.readFile(file);
-        var firstLine = shaderSource.split("\n")[0];
-        var success = undefined;
-        if (wtu.endsWith(firstLine, " fail") ||
-            wtu.endsWith(firstLine, " fail.")) {
-          success = false;
-        } else if (wtu.endsWith(firstLine, " succeed") ||
-                   wtu.endsWith(firstLine, " succeed.")) {
-          success = true;
-        }
-        if (success === undefined) {
-          testFailed("bad first line in " + file + ":" + firstLine);
-          continue;
-        }
-        if (!wtu.startsWith(firstLine, "// ")) {
-          testFailed("bad first line in " + file + ":" + firstLine);
-          continue;
-        }
-        passMsg = passMsg + (passMsg.length ? ", " : "") + firstLine.substr(3);
-        if (wtu.endsWith(file, ".vert")) {
-          info.vShaderId = file;
-          info.vShaderSource = shaderSource;
-          info.vShaderSuccess = success;
-        } else if (wtu.endsWith(file, ".frag")) {
-          info.fShaderId = file;
-          info.fShaderSource = shaderSource;
-          info.fShaderSuccess = success;
-        }
+    var files = wtu.readFileList(filename);
+    for (var ii = 0; ii < files.length; ++ii) {
+      var file = files[ii];
+      var shaderSource = wtu.readFile(file);
+      var firstLine = shaderSource.split("\n")[0];
+      var success = undefined;
+      if (wtu.endsWith(firstLine, " fail") ||
+          wtu.endsWith(firstLine, " fail.")) {
+        success = false;
+      } else if (wtu.endsWith(firstLine, " succeed") ||
+                 wtu.endsWith(firstLine, " succeed.")) {
+        success = true;
+      }
+      if (success === undefined) {
+        testFailed("bad first line in " + file);
+        continue;
+      }
+      if (!wtu.startsWith(firstLine, "// ")) {
+        testFailed("bad first line in " + file);
+        continue;
       }
-      info.linkSuccess = info.vShaderSuccess && info.fShaderSuccess;
-      info.passMsg = passMsg;
-      shaderInfo.push(info);
+      var passMsg = firstLine.substr(3);
+      if (wtu.endsWith(file, ".vert")) {
+        shaderInfo.push({
+            vShaderId: file,
+            vShaderSource: shaderSource,
+            vShaderSuccess: success,
+            fShaderId: 'fshader',
+            fShaderSource: simpleFragShader,
+            fShaderSuccess: true,
+            linkSuccess: success,
+            passMsg: passMsg,
+          });
+      } else if (wtu.endsWith(file, ".frag")) {
+        shaderInfo.push({
+            vShaderId: 'vshader',
+            vShaderSource: simpleVertShader,
+            vShaderSuccess: true,
+            fShaderId: file,
+            fShaderSource: shaderSource,
+            fShaderSuccess: success,
+            linkSuccess: success,
+            passMsg: passMsg,
+          });
+      }
     }
   }
 
   addExternalShaders('shaders/00_shaders.txt');
 
-  var vShaderDB = { };
-  var fShaderDB = { };
-
   for (var ii = 0; ii < shaderInfo.length; ++ii) {
     var info = shaderInfo[ii];
     var passMsg = '[' + info.vShaderId + '/' + info.fShaderId + ']: ' +
                   info.passMsg
     log(passMsg);
-
     //debug(info.fShaderId);
     var vSource = info.vShaderPrep ? info.vShaderPrep(info.vShaderSource) :
       info.vShaderSource;
-
-    // Reuse identical shaders so we test shared shader.
-    var vShader = vShaderDB[vSource];
-    if (!vShader) {
-      vShader = wtu.loadShader(gl, vSource, gl.VERTEX_SHADER);
-      if (info.vShaderTest) {
-        if (!info.vShaderTest(vShader)) {
-          testFailed(passMsg);
-          continue;
-        }
-      }
-      if ((vShader != null) != info.vShaderSuccess) {
+    var vShader = wtu.loadShader(gl, vSource, gl.VERTEX_SHADER);
+    if (info.vShaderTest) {
+      if (!info.vShaderTest(vShader)) {
         testFailed(passMsg);
         continue;
       }
-      // Save the shaders so we test shared shader.
-      if (vShader) {
-        vShaderDB[vSource] = vShader;
-      }
     }
-
+    if ((vShader != null) != info.vShaderSuccess) {
+      testFailed(passMsg);
+      continue;
+    }
     var fSource = info.fShaderPrep ? info.fShaderPrep(info.fShaderSource) :
       info.fShaderSource;
-
-    // Reuse identical shaders so we test shared shader.
-    var fShader = fShaderDB[fSource];
-    if (!fShader) {
-      fShader = wtu.loadShader(gl, fSource, gl.FRAGMENT_SHADER);
-      if (info.fShaderTest) {
-        if (!info.fShaderTest(fShader)) {
-          testFailed(passMsg);
-          continue;
-        }
-      }
-      //debug(fShader == null ? "fail" : "succeed");
-      if ((fShader != null) != info.fShaderSuccess) {
+    var fShader = wtu.loadShader(gl, fSource, gl.FRAGMENT_SHADER);
+    if (info.fShaderTest) {
+      if (!info.fShaderTest(fShader)) {
         testFailed(passMsg);
         continue;
       }
-      // Safe the shaders so we test shared shader.
-      if (fShader) {
-        fShaderDB[fSource] = fShader;
-      }
+    }
+    //debug(fShader == null ? "fail" : "succeed");
+    if ((fShader != null) != info.fShaderSuccess) {
+      testFailed(passMsg);
+      continue;
     }
 
     if (vShader && fShader) {
       var program = gl.createProgram();
       gl.attachShader(program, vShader);
       gl.attachShader(program, fShader);
       gl.linkProgram(program);
       var linked = (gl.getProgramParameter(program, gl.LINK_STATUS) != 0);
@@ -938,10 +710,13 @@ if (!gl) {
 }
 
 debug("");
 successfullyParsed = true;
 
 </script>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
deleted file mode 100755
--- a/content/canvas/test/webgl/conformance/glsl-features.html
+++ /dev/null
@@ -1,234 +0,0 @@
-<!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
-Use of this source code is governed by a BSD-style license that can be
-found in the LICENSE file.
-
-Note: To use this sample pass arguments through the URL.
-
-Arguments:
-  feature:  name of the feature being testing
-
-  res:      number of subdivisions in quad. default: 2
-
-  refvs:    relative url to reference vertex shader
-            default shaders/glsl-features/base.vert
-
-  reffs:    relative url to reference fragment shader
-            default shaders/glsl-features/base.frag
-
-  testvs:   relative url to test vertex shader
-            default shaders/glsl-features/base.vert
-
-  testfs:   relative url to test fragment shader
-            default shaders/glsl-features/base.frag
-
-Example:
-glsl-feature.html?feature=abs&refvs=shader/abs-ref.vert&testvs=shader/abs-test.vert
-
-The idea is to provide 2 shaders that should generate the same image. One shader
-uses the actual feature you want to test. Another emluates that feature to
-provide a reference image.
-
-For example, a test of abs would use "abs" in the test and "v < 0 ? -v : v" in
-the reference.
-
-Both shaders are passed a unit square that covers the entire canvas and 
-texcoords that go from 0.0 to 1.0 over the canvas. A vColor value is also passed
-from the vertex shader to the fragment shader to give the vertex shader
-a chance to generate something.
- -->
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-  <title>GLSL feature Test</title>
-  <link rel="stylesheet" href="../resources/js-test-style.css"/>
-  <script src="../resources/js-test-pre.js"></script>
-  <script src="resources/webgl-test.js"> </script>
-  <script src="resources/webgl-test-utils.js"> </script>
-  <style>
-canvas {
-  background-color: white;
-  background-image: linear-gradient(0, rgba(200, 200, 200, .5) 50%, transparent 50%), linear-gradient(rgba(200, 200, 200, .5) 50%, transparent 50%);
-  background-size: 8px 8px;
-}
-  </style>
-</head>
-<body>
-<table>
-<tr><td>ref</td><td>test</td><td>diff</td></tr>
-<tr>
-<td><canvas id="canvas1" width="32" height="32"></canvas></td>
-<td><canvas id="canvas2" width="32" height="32"></canvas></td>
-<td><canvas id="diff" width="32" height="32"></canvas></td>
-</tr>
-</table>
-<div id="description"></div>
-<div id="console"></div>
-<script>
-function init()
-{
-  if (window.initNonKhronosFramework) {
-    window.initNonKhronosFramework(false);
-  }
-
-  wtu = WebGLTestUtils;
-  var args = wtu.getUrlArguments();
-  var feature = args.feature || "**unset**";
-  var refVS = args.refvs || "shaders/glsl-features/base.vert";
-  var refFS = args.reffs || "shaders/glsl-features/base.frag";
-  var testVS = args.testvs || "shaders/glsl-features/base.vert";
-  var testFS = args.testfs || "shaders/glsl-features/base.frag";
-  var gridRes = args.res ? parseInt(args.res) : 2;
-
-  description("Testing GLSL feature: " + feature);
-  debug("");
-  debug("using reference shaders:");
-  debug("  " + makeLink(refVS));
-  debug("  " + makeLink(refFS));
-  debug("");
-  debug("using test shaders:");
-  debug("  " + makeLink(testVS));
-  debug("  " + makeLink(testFS));
-  debug("");
-
-  function makeLink(url) {
-    return '<a target="_blank" href="' + url + '">' + url + '</a>';
-  }
-
-  var canvas1 = document.getElementById("canvas1");
-  var canvas2 = document.getElementById("canvas2");
-  var diff = document.getElementById("diff");
-
-  var width = canvas1.width;
-  var height = canvas1.height;
-
-  function draw(canvas, vsURL, fsURL) {
-    var gl = wtu.create3DContext(canvas);
-    if (!gl) {
-      testFailed("context does not exist");
-      return;
-    }
-
-    var program = wtu.loadProgramFromFile(gl, vsURL, fsURL);
-
-    var posLoc = gl.getAttribLocation(program, "aPosition");
-    var refLoc = gl.getAttribLocation(program, "aTexcoord");
-    setupQuad(gl, posLoc, refLoc);
-
-    gl.useProgram(program);
-    gl.clearColor(0, 0, 1, 1);
-    gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
-    gl.drawElements(gl.TRIANGLES, gridRes * gridRes * 6, gl.UNSIGNED_SHORT, 0);
-    wtu.glErrorShouldBe(gl, gl.NO_ERROR, "no errors from draw");
-
-    var img = new Uint8Array(width * height * 4);
-    gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, img);
-    return img;
-  }
-
-  function setupQuad(gl, positionLocation, texcoordLocation) {
-    var objects = [];
-
-    var vertsAcross = gridRes + 1;
-    var numVerts = vertsAcross * vertsAcross;
-    var positions = new Float32Array(numVerts * 3);
-    var texcoords = new Float32Array(numVerts * 2);
-    var indices = new Uint16Array(6 * gridRes * gridRes);
-
-    var poffset = 0;
-    var toffset = 0;
-
-    for (var yy = 0; yy <= gridRes; ++yy) {
-      for (var xx = 0; xx <= gridRes; ++xx) {
-        positions[poffset + 0] = -1 + 2 * xx / gridRes;
-        positions[poffset + 1] = -1 + 2 * yy / gridRes;
-        positions[poffset + 2] = 0;
-
-        texcoords[toffset + 0] = xx / gridRes;
-        texcoords[toffset + 1] = yy / gridRes;
-
-        poffset += 3;
-        toffset += 2;
-      }
-    }
-
-    var tbase = 0;
-    for (var yy = 0; yy < gridRes; ++yy) {
-      var index = yy * vertsAcross;
-      for (var xx = 0; xx < gridRes; ++xx) {
-        indices[tbase + 0] = index + 0;
-        indices[tbase + 1] = index + 1;
-        indices[tbase + 2] = index + vertsAcross;
-        indices[tbase + 3] = index + vertsAcross;
-        indices[tbase + 4] = index + 1;
-        indices[tbase + 5] = index + vertsAcross + 1;
-
-        index += 1;
-        tbase += 6;
-      }
-    }
-
-    var buf = gl.createBuffer();
-    gl.bindBuffer(gl.ARRAY_BUFFER, buf);
-    gl.bufferData(gl.ARRAY_BUFFER, positions, gl.STATIC_DRAW);
-    gl.enableVertexAttribArray(positionLocation);
-    gl.vertexAttribPointer(positionLocation, 3, gl.FLOAT, false, 0, 0);
-    objects.push(buf);
-  
-    var buf = gl.createBuffer();
-    gl.bindBuffer(gl.ARRAY_BUFFER, buf);
-    gl.bufferData(gl.ARRAY_BUFFER, texcoords, gl.STATIC_DRAW);
-    gl.enableVertexAttribArray(texcoordLocation);
-    gl.vertexAttribPointer(texcoordLocation, 2, gl.FLOAT, false, 0, 0);
-    objects.push(buf);
-
-    var buf = gl.createBuffer();
-    gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buf);
-    gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);
-    objects.push(buf);
-
-    return objects;
-  }
-
-  var refImage = draw(canvas1, refVS, refFS);
-  var testImage = draw(canvas2, testVS, testFS);
-
-  var ctx = diff.getContext("2d");
-  var imgData = ctx.getImageData(0, 0, width, height);
-
-  var same = true;
-  for (var yy = 0; yy < height; ++yy) {
-    for (var xx = 0; xx < width; ++xx) {
-      var offset = (yy * width + xx) * 4;
-      var imgOffset = ((height - yy - 1) * width + xx) * 4;
-      imgData.data[imgOffset + 0] = 0;
-      imgData.data[imgOffset + 1] = 0;
-      imgData.data[imgOffset + 2] = 0;
-      imgData.data[imgOffset + 3] = 255;
-      if (refImage[offset + 0] != testImage[offset + 0] ||
-          refImage[offset + 1] != testImage[offset + 1] ||
-          refImage[offset + 2] != testImage[offset + 2] ||
-          refImage[offset + 3] != testImage[offset + 3]) {
-        imgData.data[imgOffset] = 255;
-        same = false;
-      }
-    }
-  }
-
-  if (!same) {
-    ctx.putImageData(imgData, 0, 0);
-    testFailed("images are different");
-  } else {
-    testPassed("images are the same");
-  }
-}
-
-init();
-successfullyParsed = true;
-</script>
-<script src="../resources/js-test-post.js"></script>
-
-</body>
-</html>
-
deleted file mode 100644
--- a/content/canvas/test/webgl/conformance/glsl-long-variable-names.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>glsl long variable name mapping tests</title>
-    <link rel="stylesheet" href="../resources/js-test-style.css"/>
-    <script src="../resources/js-test-pre.js"></script>
-    <script src="resources/webgl-test.js"> </script>
-</head>
-<body>
-    <canvas id="example" width="50" height="50">
-    There is supposed to be an example drawing here, but it's not important.
-    </canvas>
-    <div id="description">Verify that shader long variable names works fine if they are within 256 characters.</div>
-    <div id="console"></div>
-    <script id="vshader" type="x-shader/x-vertex">
-        attribute vec4 vPosition0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456;
-        varying float alpha01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890;
-        void main()
-        {
-            alpha01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 = 1.0;
-            gl_Position = vPosition0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456;
-        }
-    </script>
-
-    <script id="fshader" type="x-shader/x-fragment">
-        precision mediump float;
-        varying float alpha01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890;
-        uniform float color01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567[3];
-        void main()
-        {
-            for (int i012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234 = 0; i012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234 < 1; ++i012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234)
-            {
-                gl_FragColor = vec4(color01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567[0], color01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567[1], color01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567[2], alpha01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890);
-            }
-        }
-    </script>
-
-    <script>
-        function fail(x,y, buf, shouldBe)
-        {
-            var i = (y*50+x) * 4;
-            var reason = "pixel at ("+x+","+y+") is ("+buf[i]+","+buf[i+1]+","+buf[i+2]+","+buf[i+3]+"), should be "+shouldBe;
-            testFailed(reason);
-        }
-
-        function pass()
-        {
-            testPassed("drawing is correct");
-        }
-
-        if (window.initNonKhronosFramework) {
-            window.initNonKhronosFramework(false);
-        }
-
-        gl = initWebGL("example", "vshader", "fshader", [ "vPosition0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456"], [ 0, 0, 0, 1 ], 1);
-
-        var prog = gl.getParameter(gl.CURRENT_PROGRAM);
-        shouldBeNonNull(prog);
-        var redLoc = gl.getUniformLocation(prog, "color01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567[0]");
-        shouldBeNonNull(redLoc);
-        var greenLoc = gl.getUniformLocation(prog, "color01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567[1]");
-        shouldBeNonNull(greenLoc);
-        var blueLoc = gl.getUniformLocation(prog, "color01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567[2]");
-        shouldBeNonNull(blueLoc);
-
-        shouldBe("gl.getProgramParameter(prog, gl.ACTIVE_ATTRIBUTES)", "1");
-        var activeAttrib = gl.getActiveAttrib(prog, 0);
-        shouldBeNonNull(activeAttrib);
-        shouldBe("activeAttrib.size", "1");
-        shouldBe("activeAttrib.type", "gl.FLOAT_VEC4");
-        shouldBe("activeAttrib.name", "'vPosition0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456'");
-
-        shouldBe("gl.getProgramParameter(prog, gl.ACTIVE_UNIFORMS)", "1");
-        var activeUniform = gl.getActiveUniform(prog, 0);
-        shouldBeNonNull(activeUniform);
-        shouldBe("activeUniform.size", "3");
-        shouldBe("activeUniform.type", "gl.FLOAT");
-        shouldBe("activeUniform.name", "'color01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567[0]'");
-
-        gl.uniform1f(redLoc, 1.0); 
-        gl.uniform1f(greenLoc, 0.0);
-        gl.uniform1f(blueLoc, 1.0);
-
-        var vertexObject = gl.createBuffer();
-        gl.bindBuffer(gl.ARRAY_BUFFER, vertexObject);
-        gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ 0,0.5,0, -0.5,-0.5,0, 0.5,-0.5,0 ]), gl.STATIC_DRAW);
-        gl.enableVertexAttribArray(0);
-        gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);
-
-        gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
-        gl.drawArrays(gl.TRIANGLES, 0, 3);
-
-        var buf = new Uint8Array(50 * 50 * 4);
-        gl.readPixels(0, 0, 50, 50, gl.RGBA, gl.UNSIGNED_BYTE, buf);
-        shouldBe("gl.getError()", "gl.NO_ERROR");
-
-        function checkPixels()
-        {
-            // Test several locations
-            // First line should be all black
-            for (var i = 0; i < 50; ++i)
-                if (buf[i*4] != 0 || buf[i*4+1] != 0 || buf[i*4+2] != 0 || buf[i*4+3] != 255) {
-                    fail(i, 0, buf, "(0,0,0,255)");
-                    return;
-                }
-
-            // Line 15 should be red for at least 10 red pixels starting 20 pixels in
-            var offset = (15*50+20) * 4;
-            for (var i = 0; i < 10; ++i)
-                if (buf[offset+i*4] != 255 || buf[offset+i*4+1] != 0 || buf[offset+i*4+2] != 255 || buf[offset+i*4+3] != 255) {
-                    fail(20 + i, 15, buf, "(255,0,255,255)");
-                    return;
-                }
-            // Last line should be all black
-            offset = (49*50) * 4;
-            for (var i = 0; i < 50; ++i)
-                if (buf[offset+i*4] != 0 || buf[offset+i*4+1] != 0 || buf[offset+i*4+2] != 0 || buf[offset+i*4+3] != 255) {
-                    fail(i, 49, buf, "(0,0,0,255)");
-                    return;
-                }
-
-            pass();
-        }
-        checkPixels();
-        successfullyParsed = true;
-    </script>
-    <script src="../resources/js-test-post.js"></script>
-</body>
-</html>
--- a/content/canvas/test/webgl/conformance/incorrect-context-object-behaviour.html
+++ b/content/canvas/test/webgl/conformance/incorrect-context-object-behaviour.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (C) 2011 Apple Computer, Inc.  All rights reserved.
+Copyright (C) 2009 Apple Computer, Inc.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
@@ -17,20 +17,18 @@ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHA
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
--- a/content/canvas/test/webgl/conformance/index-validation-copies-indices.html
+++ b/content/canvas/test/webgl/conformance/index-validation-copies-indices.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:
 
    * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
@@ -22,20 +22,18 @@ A PARTICULAR PURPOSE ARE DISCLAIMED. IN 
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
--- a/content/canvas/test/webgl/conformance/index-validation-crash-with-buffer-sub-data.html
+++ b/content/canvas/test/webgl/conformance/index-validation-crash-with-buffer-sub-data.html
@@ -1,17 +1,15 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2010 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
--- a/content/canvas/test/webgl/conformance/index-validation-verifies-too-many-indices.html
+++ b/content/canvas/test/webgl/conformance/index-validation-verifies-too-many-indices.html
@@ -1,17 +1,15 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2010 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
--- a/content/canvas/test/webgl/conformance/index-validation-with-resized-buffer.html
+++ b/content/canvas/test/webgl/conformance/index-validation-with-resized-buffer.html
@@ -1,17 +1,15 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2010 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <canvas id="example" width="1px" height="1px"></canvas>
 <div id="description"></div>
 <div id="console"></div>
@@ -21,17 +19,19 @@ attribute vec4 vPosition;
 attribute vec4 vColor;
 varying vec4 color;
 void main() {
     gl_Position = vPosition;
     color = vColor;
 }
 </script>
 <script id="fs" type="x-shader/x-fragment">
+#if defined(GL_ES)
 precision mediump float;
+#endif
 varying vec4 color;
 void main() {
   gl_FragColor = color;
 }
 </script>
 <script>
 description('Test that updating the size of a vertex buffer is properly noticed by the WebGL implementation.')
 
--- a/content/canvas/test/webgl/conformance/index-validation.html
+++ b/content/canvas/test/webgl/conformance/index-validation.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:
 
    * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
@@ -22,20 +22,18 @@ A PARTICULAR PURPOSE ARE DISCLAIMED. IN 
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
 
--- a/content/canvas/test/webgl/conformance/instanceof-test.html
+++ b/content/canvas/test/webgl/conformance/instanceof-test.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL instanceof test.</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 </head>
 <body>
 <canvas id="canvas" width="2" height="2" style="width: 40px; height: 40px;"></canvas>
@@ -22,17 +22,19 @@ attribute vec4 vPosition;
 varying vec2 texCoord;
 void main()
 {
     gl_Position = vPosition;
 }
 </script>
 
 <script id="fshader" type="x-shader/x-fragment">
+#ifdef GL_ES
 precision mediump float;
+#endif
 uniform vec4 color;
 void main()
 {
     gl_FragColor = color;
 }
 </script>
 <script>
 var wtu = WebGLTestUtils;
@@ -78,14 +80,18 @@ shouldThrowWithNew(WebGLFramebuffer, 'We
 shouldThrowWithNew(WebGLProgram, 'WebGLProgram');
 shouldThrowWithNew(WebGLRenderbuffer, 'WebGLRenderbuffer');
 shouldThrowWithNew(WebGLShader, 'WebGLShader');
 shouldThrowWithNew(WebGLTexture, 'WebGLTexture');
 shouldThrowWithNew(WebGLUniformLocation, 'WebGLUniformLocation');
 
 successfullyParsed = true;
 </script>
+</body>
 <script src="../resources/js-test-post.js"></script>
 
+<script>
+</script>
+
 </body>
 </html>
 
 
--- a/content/canvas/test/webgl/conformance/invalid-UTF-16.html
+++ b/content/canvas/test/webgl/conformance/invalid-UTF-16.html
@@ -1,17 +1,15 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2010 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css">
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <p id="description"></p>
 <div id="console"></div>
 <script>
--- a/content/canvas/test/webgl/conformance/invalid-passed-params.html
+++ b/content/canvas/test/webgl/conformance/invalid-passed-params.html
@@ -1,10 +1,10 @@
 <!--
-Copyright (C) 2011 Apple Computer, Inc.  All rights reserved.
+Copyright (C) 2009 Apple Computer, Inc.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
@@ -17,20 +17,18 @@ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHA
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 <script src="../resources/desktop-gl-constants.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
@@ -122,17 +120,17 @@ function generateShaderSource(opt_invali
                           + "gl_Position = vec4(0.0, 0.0, 0.0, 1.0); }\n";
                           + "//.+-/*%<>[](){}^|&~=!:;,?# " + invalidCommentString;
 }
 var vShader = context.createShader(context.VERTEX_SHADER);
 context.shaderSource(vShader, generateShaderSource());
 context.compileShader(vShader);
 shouldBe("context.getError()", "context.NO_ERROR");
 var fShader = context.createShader(context.FRAGMENT_SHADER);
-context.shaderSource(fShader, "precision mediump float;\n"
+context.shaderSource(fShader, "precision highp float;\n"
                               + "varying float " + validAttribName + ";\n"
                               + "void main() {\n"
                               + "gl_FragColor = vec4(" + validAttribName + ", 0.0, 0.0, 1.0); }");
 context.compileShader(fShader);
 shouldBe("context.getError()", "context.NO_ERROR");
 var program = context.createProgram();
 context.attachShader(program, vShader);
 context.attachShader(program, fShader);
--- a/content/canvas/test/webgl/conformance/is-object.html
+++ b/content/canvas/test/webgl/conformance/is-object.html
@@ -1,12 +1,10 @@
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 <script src="resources/webgl-test-utils.js"></script>
 </head>
 <body>
 <div id="description"></div>
 <div id="console"></div>
--- a/content/canvas/test/webgl/conformance/methods.html
+++ b/content/canvas/test/webgl/conformance/methods.html
@@ -1,17 +1,16 @@
-<!DOCTYPE html>
 <html>
 <head>
-<meta charset="utf-8">
 <!--
-Copyright (c) 2011 Ilmari Heikkinen. All rights reserved.
+Copyright (c) 2009 Ilmari Heikkinen. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
 -->
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>WebGL Methods Test</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"></script>
 </head>
 <body>
 <div id="description"></div>
@@ -190,11 +189,13 @@ for (var i in gl) {
     debug(i);
   }
 }
 
 debug("");
 successfullyParsed = true;
 </script>
 <script src="../resources/js-test-post.js"></script>
+<script>
+</script>
 
 </body>
 </html>
--- a/content/canvas/test/webgl/conformance/more-than-65536-points.html
+++ b/content/canvas/test/webgl/conformance/more-than-65536-points.html
@@ -1,17 +1,17 @@
 <!--
-Copyright (c) 2011 The Chromium Authors. All rights reserved.
+Copyright (c) 2009 The Chromium Authors. All rights reserved.
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
  -->
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-<meta charset="utf-8">
 <title>WebGL More than 65536 points.</title>
 <link rel="stylesheet" href="../resources/js-test-style.css"/>
 <script src="../resources/js-test-pre.js"></script>
 <script src="resources/webgl-test.js"> </script>
 <script src="resources/webgl-test-utils.js"> </script>
 </head>
 <body>
 <canvas id="example" width="40" height="40" style="width: 40px; height: 40px;"></canvas>
@@ -22,17 +22,19 @@ attribute vec4 vPosition;
 attribute vec4 vColor;
 varying vec4 color;
 void main() {
     gl_Position = vPosition;
     color = vColor;
 }
 </script>
 <script id="fs" type="text/something-not-javascript">
+#if defined(GL_ES)
 precision mediump float;
+#endif
 varying vec4 color;
 void main() {
     gl_FragColor = color;
 }
 </script>
 <script>
 var wtu = WebGLTestUtils;
 var gl = initWebGL("example", "vs", "fs", ["vPosition", "vColor"], [0, 0, 0, 1], 1);
--- a/content/canvas/test/webgl/conformance/more/00_test_list.txt
+++ b/content/canvas/test/webgl/conformance/more/00_test_list.txt
@@ -1,12 +1,12 @@
 conformance/constants.html
 conformance/getContext.html
 conformance/methods.html
-conformance/quickCheckAPI.html
+#conformance/quickCheckAPI.html
 conformance/webGLArrays.html
 functions/bindBuffer.html
 functions/bindBufferBadArgs.html
 functions/bindFramebufferLeaveNonZero.html
 functions/bufferData.html
 functions/bufferDataBadArgs.html
 functions/bufferSubData.html
 functions/bufferSubDataBadArgs.html
--- a/content/canvas/test/webgl/conformance/more/all_tests.html
+++ b/content/canvas/test/webgl/conformance/more/all_tests.html
@@ -1,15 +1,14 @@
 <html>
 <head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
--- a/content/canvas/test/webgl/conformance/more/all_tests_linkonly.html
+++ b/content/canvas/test/webgl/conformance/more/all_tests_linkonly.html
@@ -1,15 +1,14 @@
 <html>
 <head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
--- a/content/canvas/test/webgl/conformance/more/all_tests_sequential.html
+++ b/content/canvas/test/webgl/conformance/more/all_tests_sequential.html
@@ -1,15 +1,14 @@
 <html>
 <head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
--- a/content/canvas/test/webgl/conformance/more/conformance/badArgsArityLessThanArgc.html
+++ b/content/canvas/test/webgl/conformance/more/conformance/badArgsArityLessThanArgc.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -24,16 +23,17 @@ OF MERCHANTABILITY, FITNESS FOR A PARTIC
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 /*
   The following tests are generated from
   http://www.khronos.org/registry/gles/api/2.0/gl2.h
--- a/content/canvas/test/webgl/conformance/more/conformance/constants.html
+++ b/content/canvas/test/webgl/conformance/more/conformance/constants.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -24,16 +23,17 @@ OF MERCHANTABILITY, FITNESS FOR A PARTIC
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 /*
   The following tests are generated from
   http://www.khronos.org/registry/gles/api/2.0/gl2.h
--- a/content/canvas/test/webgl/conformance/more/conformance/fuzzTheAPI.html
+++ b/content/canvas/test/webgl/conformance/more/conformance/fuzzTheAPI.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 
 <script type="application/x-javascript">
 
 Tests.autorun = false;
 Tests.message = "This will fuzz the API with random inputs for a [long] while."
--- a/content/canvas/test/webgl/conformance/more/conformance/getContext.html
+++ b/content/canvas/test/webgl/conformance/more/conformance/getContext.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 
 <script type="application/x-javascript">
 
 Tests.testGetWebGL = function() {
   var canvas = document.getElementById('webgl');
--- a/content/canvas/test/webgl/conformance/more/conformance/methods.html
+++ b/content/canvas/test/webgl/conformance/more/conformance/methods.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -24,16 +23,17 @@ OF MERCHANTABILITY, FITNESS FOR A PARTIC
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 /*
   The following tests are generated from
   http://www.khronos.org/registry/gles/api/2.0/gl2.h
--- a/content/canvas/test/webgl/conformance/more/conformance/quickCheckAPI.html
+++ b/content/canvas/test/webgl/conformance/more/conformance/quickCheckAPI.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript" src="quickCheckAPI.js"></script>
 
 <script type="application/x-javascript">
 
 // Test that all GL functions specified in ArgGenerators work
--- a/content/canvas/test/webgl/conformance/more/conformance/quickCheckAPIBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/conformance/quickCheckAPIBadArgs.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript" src="quickCheckAPI.js"></script>
 
 <script type="application/x-javascript">
 
 // Test that all GL functions specified in ArgGenerators fail
--- a/content/canvas/test/webgl/conformance/more/conformance/webGLArrays.html
+++ b/content/canvas/test/webgl/conformance/more/conformance/webGLArrays.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 
 <script type="application/x-javascript">
 
 function assertIdxs(name, arr, length) {
 //   assertOk(name+": Read with negative idx should work", function(){ return arr[-1] });
@@ -140,18 +140,19 @@ Tests.testThatWritesChangeDrawing = func
 <script id="vert" type="x-shader/x-vertex">
   attribute vec2 Vertex;
   void main()
   {
     gl_Position = vec4(Vertex, 0.0, 1.0);
   }
 </script>
 <script id="frag" type="x-shader/x-fragment">
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   uniform vec4 c;
   void main()
   {
     gl_FragColor = c;
   }
 </script>
 <style>canvas{border: 1px solid black}</style>
 </head><body>
--- a/content/canvas/test/webgl/conformance/more/demos/opengl_web.html
+++ b/content/canvas/test/webgl/conformance/more/demos/opengl_web.html
@@ -1,13 +1,13 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 
 <title>OpenGL for the web</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 
 <script type="application/x-javascript" src="../util.js"></script>
 
     <script type="application/x-javascript">
 
 function log(msg) {
   document.getElementById('note').textContent += "\n"+msg;
 }
@@ -244,18 +244,19 @@ window.addEventListener("load", init, fa
         ambient = MaterialAmbient * LightAmbient;
         ambientGlobal = GlobalAmbient * MaterialAmbient;
 
         gl_Position = PMatrix * worldPos;
       }
     </script>
 
     <script id="ppix-frag" type="x-shader/x-fragment">
-      precision mediump float;
-
+      #ifdef GL_ES
+precision highp float;
+#endif
       uniform vec4 LightSpecular;
       uniform vec4 MaterialSpecular;
       uniform float MaterialShininess;
 
       uniform float LightConstantAtt;
       uniform float LightLinearAtt;
       uniform float LightQuadraticAtt;
 
@@ -296,18 +297,19 @@ window.addEventListener("load", init, fa
       varying float depth;
       void main()
       {
         gl_Position = PMatrix * (MVMatrix * vec4(Vertex, 1.0));
         depth = 1.0-(gl_Position.z / gl_Position.w);
       }
     </script>
     <script id="depth-frag" type="x-shader/x-fragment">
-      precision mediump float;
-
+      #ifdef GL_ES
+precision highp float;
+#endif
       varying float depth;
       void main()
       {
         vec4 c = vec4(depth, 0.0, 0.0, 1.0);
         gl_FragColor = c;
       }
     </script>
 
@@ -318,61 +320,65 @@ window.addEventListener("load", init, fa
       varying vec4 texCoord0;
       void main()
       {
         texCoord0 = vec4(Tex,0.0,0.0);
         gl_Position = vec4(Vertex, 1.0);
       }
     </script>
     <script id="identity-frag" type="x-shader/x-fragment">
-      precision mediump float;
-
+      #ifdef GL_ES
+precision highp float;
+#endif
       uniform sampler2D Texture;
 
       varying vec4 texCoord0;
       void main()
       {
         vec4 c = texture2D(Texture, texCoord0.st);
         gl_FragColor = c;
       }
     </script>
     <script id="premult-frag" type="x-shader/x-fragment">
-      precision mediump float;
-
+      #ifdef GL_ES
+precision highp float;
+#endif
       uniform sampler2D Texture;
 
       varying vec4 texCoord0;
       void main()
       {
         vec4 c = texture2D(Texture, texCoord0.st);
         float a = c.a;
         c *= a;
         c.a = a;
         gl_FragColor = c;
       }
     </script>
     <script id="unpremult-frag" type="x-shader/x-fragment">
-      precision mediump float;
-
+      #ifdef GL_ES
+precision highp float;
+#endif
       uniform sampler2D Texture;
 
       varying vec4 texCoord0;
       void main()
       {
         vec4 c = texture2D(Texture, texCoord0.st);
         float a = c.a;
         c /= a;
         c.a = a;
         gl_FragColor = c;
       }
     </script>
 
     <script id="hblur-frag" type="x-shader/x-fragment">
-      precision mediump float;
-
+      #ifdef GL_ES
+precision highp float;
+#endif
       uniform sampler2D Texture;
       uniform float step;
       float kernel[7] = float[](0.046, 0.111, 0.202, 0.283, 0.202, 0.111, 0.046);
 
       varying vec4 texCoord0;
       void main()
       {
         int i=0;
@@ -384,18 +390,19 @@ window.addEventListener("load", init, fa
           }
           gl_FragColor = sum;
         } else {
           gl_FragColor = texture2D(Texture, texCoord0.st);
         }
       }
     </script>
     <script id="vblur-frag" type="x-shader/x-fragment">
-      precision mediump float;
-
+      #ifdef GL_ES
+precision highp float;
+#endif
       uniform sampler2D Texture;
       uniform float step;
       float kernel[7] = float[](0.046, 0.111, 0.202, 0.283, 0.202, 0.111, 0.046);
 
       varying vec4 texCoord0;
       void main()
       {
         int i=0;
@@ -407,18 +414,19 @@ window.addEventListener("load", init, fa
           }
           gl_FragColor = sum;
         } else {
           gl_FragColor = texture2D(Texture, texCoord0.st);
         }
       }
     </script>
     <script id="hdof-frag" type="x-shader/x-fragment">
-      precision mediump float;
-
+      #ifdef GL_ES
+precision highp float;
+#endif
       uniform sampler2D Texture;
       uniform sampler2D Depth;
       uniform float step;
       uniform float iter;
       float kernel[7] = { 0.046, 0.111, 0.202, 0.283, 0.202, 0.111, 0.046 };
 
       varying vec4 texCoord0;
       void main()
@@ -439,18 +447,19 @@ window.addEventListener("load", init, fa
         tmp = texture2D(Texture, texCoord0.st + vec2(float(5-3)*step,0));
         sum += tmp * kernel[5];
         tmp = texture2D(Texture, texCoord0.st + vec2(float(6-3)*step,0));
         sum += tmp * kernel[6];
         gl_FragColor = mix(texture2D(Texture, texCoord0.st), sum, b ? 1.0 : 0.0);
       }
     </script>
     <script id="vdof-frag" type="x-shader/x-fragment">
-      precision mediump float;
-
+      #ifdef GL_ES
+precision highp float;
+#endif
       uniform sampler2D Texture;
       uniform sampler2D Depth;
       uniform float step;
       uniform float iter;
       float kernel[7] = float[7](0.046, 0.111, 0.202, 0.283, 0.202, 0.111, 0.046);
 
       varying vec4 texCoord0;
       void main()
@@ -572,9 +581,9 @@ that it doesn't make policy decisions. T
 use case for it: In addition to 3D graphics, you can also use it for
 filtering images, visualizing fluid dynamics, doing real-time video
 effects, or just crunching a whole lot of FP math. If you can do it on
 the GPU, you're in luck! </p>
     </div>
     <div id="above">
       <p>You can also place content above the canvas</p>
     </div>
-  </body></html>
+  </body></html>
\ No newline at end of file
--- a/content/canvas/test/webgl/conformance/more/demos/video.html
+++ b/content/canvas/test/webgl/conformance/more/demos/video.html
@@ -1,11 +1,10 @@
 <html>
 <head>
-<meta charset="utf-8">
 <script type="application/x-javascript" src="../util.js"></script>
 <script>
 var processor = {
   lastTime : new Date,
   timerCallback: function() {
     if (this.video.paused || this.video.ended) {
       return;
     }
@@ -68,18 +67,19 @@ var processor = {
     varying vec4 texCoord0;
     void main()
     {
         texCoord0 = vec4(Tex.s,1.0-Tex.t,0.0,0.0);
         gl_Position = vec4(Vertex, 1.0);
     }
 </script>
 <script id="greenScreen" type="x-shader/x-fragment">
-    precision mediump float;
-
+    #ifdef GL_ES
+precision highp float;
+#endif
     uniform sampler2D Texture;
     uniform sampler2D Texture2;
 
     varying vec4 texCoord0;
     void main()
     {
         vec4 c = texture2D(Texture, texCoord0.st);
         float r = c.r * 0.5;
--- a/content/canvas/test/webgl/conformance/more/functions/bindBuffer.html
+++ b/content/canvas/test/webgl/conformance/more/functions/bindBuffer.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/bindBufferBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/bindBufferBadArgs.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/bindFramebufferLeaveNonZero.html
+++ b/content/canvas/test/webgl/conformance/more/functions/bindFramebufferLeaveNonZero.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <title>OpenGL for the web</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 
 <script type="application/x-javascript" src="../util.js"></script>
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 
     <script type="application/x-javascript">
 Tests.message = "This was segfaulting when the GL context got GC'd (in glXDestroyContext)";
 Tests.testSeg = function () {
--- a/content/canvas/test/webgl/conformance/more/functions/bufferData.html
+++ b/content/canvas/test/webgl/conformance/more/functions/bufferData.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/bufferDataBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/bufferDataBadArgs.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/bufferSubData.html
+++ b/content/canvas/test/webgl/conformance/more/functions/bufferSubData.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
     var canvas = document.getElementById('gl');
     var gl = canvas.getContext(GL_CONTEXT_ID);
--- a/content/canvas/test/webgl/conformance/more/functions/bufferSubDataBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/bufferSubDataBadArgs.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
     var canvas = document.getElementById('gl');
     var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/copyTexImage2D.html
+++ b/content/canvas/test/webgl/conformance/more/functions/copyTexImage2D.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
@@ -108,18 +108,19 @@ attribute vec2 Tex;
 varying vec4 texCoord0;
 void main()
 {
     texCoord0 = vec4(Tex.s, 1.0-Tex.t, 0.0, 0.0);
     gl_Position = vec4(Vertex, 1.0);
 }
 </script>
 <script id="identity-frag" type="x-shader/x-fragment">
-precision mediump float;
-
+#ifdef GL_ES
+precision highp float;
+#endif
 uniform sampler2D Texture;
 
 varying vec4 texCoord0;
 void main()
 {
     vec4 c = texture2D(Texture, texCoord0.st);
     gl_FragColor = c;
 }
--- a/content/canvas/test/webgl/conformance/more/functions/copyTexImage2DBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/copyTexImage2DBadArgs.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
     var canvas = document.getElementById('gl');
     var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/copyTexSubImage2D.html
+++ b/content/canvas/test/webgl/conformance/more/functions/copyTexSubImage2D.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
@@ -120,18 +120,19 @@ attribute vec2 Tex;
 varying vec4 texCoord0;
 void main()
 {
     texCoord0 = vec4(Tex.s, 1.0-Tex.t, 0.0, 0.0);
     gl_Position = vec4(Vertex, 1.0);
 }
 </script>
 <script id="identity-frag" type="x-shader/x-fragment">
-precision mediump float;
-
+#ifdef GL_ES
+precision highp float;
+#endif
 uniform sampler2D Texture;
 
 varying vec4 texCoord0;
 void main()
 {
     vec4 c = texture2D(Texture, texCoord0.st);
     gl_FragColor = c;
 }
--- a/content/canvas/test/webgl/conformance/more/functions/copyTexSubImage2DBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/copyTexSubImage2DBadArgs.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
     var canvas = document.getElementById('gl');
     var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/deleteBufferBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/deleteBufferBadArgs.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = canvas.getContext(GL_CONTEXT_ID);
--- a/content/canvas/test/webgl/conformance/more/functions/drawArrays.html
+++ b/content/canvas/test/webgl/conformance/more/functions/drawArrays.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 var verts = [0.0, 0.0, 0.0,   1.0, 0.0, 0.0,   0.0, 1.0, 0.0];
 var normals = [0.0, 0.0, 1.0,   0.0, 0.0, 1.0,   0.0, 0.0, 1.0];
 var texcoords = [0.0,0.0,  1.0,0.0,  0.0,1.0];
@@ -113,18 +113,19 @@ Tests.testDrawArraysVBOMulti = function(
   varying vec4 texCoord0;
   void main()
   {
     gl_Position = vec4(Vertex * Normal, 1.0);
     texCoord0 = vec4(Tex,0.0,0.0) + gl_Position;
   }
 </script>
 <script id="frag" type="x-shader/x-fragment">
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec4 texCoord0;
   void main()
   {
     vec4 c = texCoord0;
     gl_FragColor = c;
   }
 </script>
 
--- a/content/canvas/test/webgl/conformance/more/functions/drawArraysOutOfBounds.html
+++ b/content/canvas/test/webgl/conformance/more/functions/drawArraysOutOfBounds.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 var verts = [0.0, 0.0, 0.0,   1.0, 0.0, 0.0,   0.0, 1.0, 0.0];
 var normals = [0.0, 0.0, 1.0,   0.0, 0.0, 1.0,   0.0, 0.0, 1.0];
 var texcoords = [0.0,0.0,  1.0,0.0,  0.0,1.0];
@@ -284,18 +284,19 @@ Tests.testDrawArraysOOBShaderJuggle = fu
   varying vec4 texCoord0;
   void main()
   {
     gl_Position = vec4(Vertex * Normal, 1.0);
     texCoord0 = vec4(Tex,0.0,0.0) + gl_Position;
   }
 </script>
 <script id="frag" type="x-shader/x-fragment">
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec4 texCoord0;
   void main()
   {
     gl_FragColor = texCoord0;
   }
 </script>
 
 
--- a/content/canvas/test/webgl/conformance/more/functions/drawElements.html
+++ b/content/canvas/test/webgl/conformance/more/functions/drawElements.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 var verts = [0.0, 0.0, 0.0,   1.0, 0.0, 0.0,   0.0, 1.0, 0.0];
 var normals = [0.0, 0.0, 1.0,   0.0, 0.0, 1.0,   0.0, 0.0, 1.0];
 var texcoords = [0.0,0.0,  1.0,0.0,  0.0,1.0];
@@ -121,18 +121,19 @@ Tests.testDrawElementsVBOMulti = functio
   varying vec4 texCoord0;
   void main()
   {
     gl_Position = vec4(Vertex * Normal, 1.0);
     texCoord0 = vec4(Tex,0.0,0.0) + gl_Position;
   }
 </script>
 <script id="frag" type="x-shader/x-fragment">
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec4 texCoord0;
   void main()
   {
     vec4 c = texCoord0;
     gl_FragColor = c;
   }
 </script>
 
--- a/content/canvas/test/webgl/conformance/more/functions/drawElementsBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/drawElementsBadArgs.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 // Tests.autorun = false;
 // Tests.message = "Caution: May crash your browser";
 
@@ -187,18 +187,19 @@ Tests.testSharedBuffers = function(gl, p
   varying vec4 texCoord0;
   void main()
   {
     gl_Position = vec4(Vertex * Normal, 1.0);
     texCoord0 = vec4(Tex,0.0,0.0) + gl_Position;
   }
 </script>
 <script id="frag" type="x-shader/x-fragment">
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec4 texCoord0;
   void main()
   {
     vec4 c = texCoord0;
     gl_FragColor = c;
   }
 </script>
 
--- a/content/canvas/test/webgl/conformance/more/functions/isTests.html
+++ b/content/canvas/test/webgl/conformance/more/functions/isTests.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/readPixels.html
+++ b/content/canvas/test/webgl/conformance/more/functions/readPixels.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/readPixelsBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/readPixelsBadArgs.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
@@ -70,48 +70,49 @@ Tests.testReadPixels = function(gl) {
           new Uint8Array(4*4));});
   // we can't know if this is going to fail because of negative width
   // or because the buffer size doesn't match the dimensions.
   assertSomeGLError(gl, "bad type",
       function(){gl.readPixels(0,0,1,1, gl.ALPHA, gl.FLOAT,
           new Uint8Array(1*4));});
 }
 
+/* this part is obsolete because of bug 656277
+ *
 Tests.testReadPixelsSOPIMG = function(gl) {
     var img = document.getElementById("i");
     while (!img.complete) {}
     var tex = gl.createTexture();
     gl.bindTexture(gl.TEXTURE_2D, tex);
+    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img);
+    gl.bindTexture(gl.TEXTURE_2D, null);
     // SOP failure
     assertThrowNoGLError(gl, "throw because img is from another domain",
-      function(){gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img);});
-    gl.bindTexture(gl.TEXTURE_2D, null);
-    assertOk("canvas still origin-clean",
       function(){gl.readPixels(0,0,1,1, gl.RGBA, gl.UNSIGNED_BYTE,
           new Uint8Array(4));});
     gl.deleteTexture(tex);
 }
 Tests.testReadPixelsSOPCanvas = function(gl) {
     var img = document.getElementById("i");
     while (!img.complete) {}
     var c = document.getElementById("c");
     c.getContext("2d").drawImage(img, 0, 0);
     assertFail("canvas throws because not origin clean",
       function(){c.getContext("2d").getImageData(0,0,1,1);});
     var tex = gl.createTexture();
     gl.bindTexture(gl.TEXTURE_2D, tex);
+    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, c);
+    gl.bindTexture(gl.TEXTURE_2D, null);
     // SOP failure
     assertThrowNoGLError(gl, "throw because canvas is not origin clean",
-      function(){gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, c);});
-    gl.bindTexture(gl.TEXTURE_2D, null);
-    assertOk("canvas still origin-clean",
       function(){gl.readPixels(0,0,1,1, gl.RGBA, gl.UNSIGNED_BYTE,
           new Uint8Array(4));});
     gl.deleteTexture(tex);
 }
+*/
 
 Tests.endUnit = function(gl) {
 }
 
 </script>
 </head><body>
 <canvas id="gl" width="16" height="16"></canvas>
 <canvas id="c" width="128" height="128"></canvas>
--- a/content/canvas/test/webgl/conformance/more/functions/texImage2D.html
+++ b/content/canvas/test/webgl/conformance/more/functions/texImage2D.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/texImage2DBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/texImage2DBadArgs.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
     var canvas = document.getElementById('gl');
     var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/texImage2DHTML.html
+++ b/content/canvas/test/webgl/conformance/more/functions/texImage2DHTML.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
     var canvas = document.getElementById('gl');
     var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
@@ -94,20 +94,18 @@ Tests.testTexImage2D = function(gl) {
 }
 
 Tests.testTexImage2DNonSOP = function(gl) {
     var img = document.getElementById('i2');
     while (!img.complete) {}
     var c = document.getElementById('c');
     var ctx = c.getContext('2d');
     ctx.drawImage(img,0,0);
-    assertThrowNoGLError(gl, "texImage2D with cross-origin image should throw exception.",
-      function(){gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img);});
-    assertThrowNoGLError(gl, "texImage2D with dirty origin canvas should throw exception.",
-      function(){gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, c);});
+    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img);
+    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, c);
 }
 
 Tests.endUnit = function(gl) {
 }
 
 </script>
 <script id="identity-flip-vert" type="x-shader/x-vertex">
 attribute vec3 Vertex;
@@ -127,26 +125,27 @@ attribute vec2 Tex;
 varying vec4 texCoord0;
 void main()
 {
     texCoord0 = vec4(1.0-Tex.s, Tex.t, 0.0, 0.0);
     gl_Position = vec4(Vertex, 1.0);
 }
 </script>
 <script id="identity-frag" type="x-shader/x-fragment">
-precision mediump float;
-
+#ifdef GL_ES
+precision highp float;
+#endif
 uniform sampler2D Texture;
 
 varying vec4 texCoord0;
 void main()
 {
     vec4 c = texture2D(Texture, texCoord0.st);
     gl_FragColor = c;
 }
 </script>
 </head><body>
 <canvas id="gl" width="256" height="256"></canvas>
 <canvas id="c" width="256" height="256"></canvas>
 <img id="i" width="256" height="256"  src="data:image/png;base64,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">
-<img id="i2" src="http://example.com/tests/content/canvas/test/webgl/resources/thunderbird-logo-64x64.png">
+<img id="i2" src="http://mochi.test:8888/tests/content/canvas/test/webgl/resources/thunderbird-logo-64x64.png">
 
 </body></html>
--- a/content/canvas/test/webgl/conformance/more/functions/texImage2DHTMLBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/texImage2DHTMLBadArgs.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/texSubImage2D.html
+++ b/content/canvas/test/webgl/conformance/more/functions/texSubImage2D.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/texSubImage2DBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/texSubImage2DBadArgs.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
     var canvas = document.getElementById('gl');
     var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/texSubImage2DHTML.html
+++ b/content/canvas/test/webgl/conformance/more/functions/texSubImage2DHTML.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
     var canvas = document.getElementById('gl');
     var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
@@ -102,24 +102,20 @@ Tests.testTexImage2D = function(gl) {
 }
 
 Tests.testTexImage2DNonSOP = function(gl) {
     var img = document.getElementById('i2');
     while (!img.complete) {}
     var c = document.getElementById('c');
     var ctx = c.getContext('2d');
     ctx.drawImage(img,0,0);
-    assertThrowNoGLError(gl, "texImage2D with cross-origin image should throw exception.",
-      function(){gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img);});
-    assertThrowNoGLError(gl, "texSubImage2D with cross-origin image should throw exception.",
-      function(){gl.texSubImage2D(gl.TEXTURE_2D, 0, 0,0, gl.RGBA, gl.UNSIGNED_BYTE, img);});
-    assertThrowNoGLError(gl, "texImage2D with dirty origin canvas should throw exception.",
-      function(){gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, c);});
-    assertThrowNoGLError(gl, "texSubImage2D with dirty origin canvas should throw exception.",
-      function(){gl.texSubImage2D(gl.TEXTURE_2D, 0, 0,0, gl.RGBA, gl.UNSIGNED_BYTE, c);});
+    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img);
+    gl.texSubImage2D(gl.TEXTURE_2D, 0, 0,0, gl.RGBA, gl.UNSIGNED_BYTE, img);
+    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, c);
+    gl.texSubImage2D(gl.TEXTURE_2D, 0, 0,0, gl.RGBA, gl.UNSIGNED_BYTE, c);
 }
 
 Tests.endUnit = function(gl) {
 }
 
 </script>
 <script id="identity-flip-vert" type="x-shader/x-vertex">
 attribute vec3 Vertex;
@@ -139,26 +135,27 @@ attribute vec2 Tex;
 varying vec4 texCoord0;
 void main()
 {
     texCoord0 = vec4(1.0-Tex.s, Tex.t, 0.0, 0.0);
     gl_Position = vec4(Vertex, 1.0);
 }
 </script>
 <script id="identity-frag" type="x-shader/x-fragment">
-precision mediump float;
-
+#ifdef GL_ES
+precision highp float;
+#endif
 uniform sampler2D Texture;
 
 varying vec4 texCoord0;
 void main()
 {
     vec4 c = texture2D(Texture, texCoord0.st);
     gl_FragColor = c;
 }
 </script>
 </head><body>
 <canvas id="gl" width="256" height="256"></canvas>
 <canvas id="c" width="256" height="256"></canvas>
 <img id="i" width="256" height="256"  src="data:image/png;base64,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">
-<img id="i2" src="http://example.com/tests/content/canvas/test/webgl/resources/thunderbird-logo-64x64.png">
+<img id="i2" src="http://mochi.test:8888/tests/content/canvas/test/webgl/resources/thunderbird-logo-64x64.png">
 
 </body></html>
--- a/content/canvas/test/webgl/conformance/more/functions/texSubImage2DHTMLBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/texSubImage2DHTMLBadArgs.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
--- a/content/canvas/test/webgl/conformance/more/functions/uniformMatrix.html
+++ b/content/canvas/test/webgl/conformance/more/functions/uniformMatrix.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
@@ -42,17 +42,19 @@ uniform mat3 bar3;
 varying vec4 texCoord0;
 void main()
 {
     texCoord0 = vec4(Tex.s, 1.0-Tex.t, bar[0][1]+bar3[2][1], 0.0);
     gl_Position = vec4(Vertex, 1.0);
 }
 </script>
 <script id="foobar-frag" type="x-shader/x-fragment">
-precision mediump float;
+#ifdef GL_ES
+precision highp float;
+#endif
 
 uniform mat4 foo;
 
 varying vec4 texCoord0;
 void main()
 {
     gl_FragColor = vec4(foo[0][0]/256.0, foo[1][1]/256.0, foo[2][2]/256.0, foo[3][3]*texCoord0.z/256.0);
 }
--- a/content/canvas/test/webgl/conformance/more/functions/uniformMatrixBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/uniformMatrixBadArgs.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var unwrappedGL = canvas.getContext(GL_CONTEXT_ID);
@@ -116,17 +116,19 @@ void main()
 {
     texCoord0 = vec4(Tex.s, 1.0-Tex.t, fm2[0][1]+fm3[2][1], 0.0);
     float d = am2[0][1][1] + am3[0][2][2] + am4[0][3][3] +
               am2[1][1][1] + am3[1][2][2] + am4[1][3][3];
     gl_Position = vec4(Vertex, 1.0 + d * 0.0001);
 }
 </script>
 <script id="foobar-frag" type="x-shader/x-fragment">
-precision mediump float;
+#ifdef GL_ES
+precision highp float;
+#endif
 
 uniform mat4 fm4;
 
 varying vec4 texCoord0;
 void main()
 {
     gl_FragColor = vec4(fm4[0][0]/256.0, fm4[1][1]/256.0, fm4[2][2]/256.0, fm4[3][3]*texCoord0.z/256.0);
 }
--- a/content/canvas/test/webgl/conformance/more/functions/uniformf.html
+++ b/content/canvas/test/webgl/conformance/more/functions/uniformf.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
@@ -47,18 +47,19 @@ uniform float bar;
 varying vec4 texCoord0;
 void main()
 {
     texCoord0 = vec4(Tex.s, 1.0-Tex.t, bar, 0.0);
     gl_Position = vec4(Vertex, 1.0);
 }
 </script>
 <script id="foobar-frag" type="x-shader/x-fragment">
-precision mediump float;
-
+#ifdef GL_ES
+precision highp float;
+#endif
 uniform vec4 foo;
 
 varying vec4 texCoord0;
 void main()
 {
     gl_FragColor = vec4(foo.r/256.0, foo.g/256.0, foo.b/256.0, foo.a*texCoord0.z/256.0);
 }
 </script>
--- a/content/canvas/test/webgl/conformance/more/functions/uniformfArrayLen1.html
+++ b/content/canvas/test/webgl/conformance/more/functions/uniformfArrayLen1.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
@@ -69,18 +69,19 @@ uniform float uniFloat[1];
 varying vec4 texCoord0;
 void main()
 {
     texCoord0 = vec4(Tex.s, 1.0-Tex.t, uniFloat[0], 0.0);
     gl_Position = vec4(Vertex, 1.0);
 }
 </script>
 <script id="foobar-frag" type="x-shader/x-fragment">
-precision mediump float;
-
+#ifdef GL_ES
+precision highp float;
+#endif
 uniform vec4 uniV4[1];
 
 varying vec4 texCoord0;
 void main()
 {
     gl_FragColor = vec4(
         uniV4[0].r/256.0,
         uniV4[0].g/256.0,
--- a/content/canvas/test/webgl/conformance/more/functions/uniformfBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/uniformfBadArgs.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
@@ -74,18 +74,19 @@ uniform float uniFloat;
 varying vec4 texCoord0;
 void main()
 {
     texCoord0 = vec4(Tex.s, 1.0-Tex.t, uniFloat, 0.0);
     gl_Position = vec4(Vertex, 1.0);
 }
 </script>
 <script id="foobar-frag" type="x-shader/x-fragment">
-precision mediump float;
-
+#ifdef GL_ES
+precision highp float;
+#endif
 uniform vec4 uniV4;
 
 varying vec4 texCoord0;
 void main()
 {
     gl_FragColor = vec4(
         uniV4.r/256.0,
         uniV4.g/256.0,
--- a/content/canvas/test/webgl/conformance/more/functions/uniformi.html
+++ b/content/canvas/test/webgl/conformance/more/functions/uniformi.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
@@ -47,18 +47,19 @@ uniform int bar;
 varying vec4 texCoord0;
 void main()
 {
     texCoord0 = vec4(Tex.s, 1.0-Tex.t, float(bar), 0.0);
     gl_Position = vec4(Vertex, 1.0);
 }
 </script>
 <script id="foobar-frag" type="x-shader/x-fragment">
-precision mediump float;
-
+#ifdef GL_ES
+precision highp float;
+#endif
 uniform ivec4 foo;
 
 varying vec4 texCoord0;
 void main()
 {
     gl_FragColor = vec4(float(foo.r)/256.0, float(foo.g)/256.0, float(foo.b)/256.0, float(foo.a)*texCoord0.z/256.0);
 }
 </script>
--- a/content/canvas/test/webgl/conformance/more/functions/uniformiBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/uniformiBadArgs.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = wrapGLContext(canvas.getContext(GL_CONTEXT_ID));
@@ -70,17 +70,19 @@ uniform int uniInt;
 varying vec4 texCoord0;
 void main()
 {
     texCoord0 = vec4(Tex.s, 1.0-Tex.t, float(uniInt), 0.0);
     gl_Position = vec4(Vertex, 1.0);
 }
 </script>
 <script id="foobar-frag" type="x-shader/x-fragment">
-precision mediump float;
+#ifdef GL_ES
+precision highp float;
+#endif
 
 uniform ivec4 uniIV4;
 
 varying vec4 texCoord0;
 void main()
 {
     gl_FragColor = vec4(
         float(uniIV4.x)/256.0,
--- a/content/canvas/test/webgl/conformance/more/functions/vertexAttrib.html
+++ b/content/canvas/test/webgl/conformance/more/functions/vertexAttrib.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 var verts = [0.0, 0.0, 0.0,   1.0, 0.0, 0.0,   0.0, 1.0, 0.0];
 var normals = [0.0, 0.0, 1.0,   0.0, 0.0, 1.0,   0.0, 0.0, 1.0];
 var texcoords = [0.0,0.0,  1.0,0.0,  0.0,1.0];
@@ -120,18 +120,19 @@ Tests.testVertexAttribVBO = function(gl,
   varying vec4 texCoord0;
   void main()
   {
     gl_Position = vec4(Vertex * Normal, 1.0);
     texCoord0 = vec4(Tex,0.0,0.0) + gl_Position;
   }
 </script>
 <script id="frag" type="x-shader/x-fragment">
-  precision mediump float;
-
+  #ifdef GL_ES
+  precision highp float;
+  #endif
   varying vec4 texCoord0;
   void main()
   {
     vec4 c = texCoord0;
     gl_FragColor = c;
   }
 </script>
 
--- a/content/canvas/test/webgl/conformance/more/functions/vertexAttribBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/vertexAttribBadArgs.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 var verts = [0.0, 0.0, 0.0,   1.0, 0.0, 0.0,   0.0, 1.0, 0.0];
 var normals = [0.0, 0.0, 1.0,   0.0, 0.0, 1.0,   0.0, 0.0, 1.0];
 var texcoords = [0.0,0.0,  1.0,0.0,  0.0,1.0];
@@ -96,18 +96,19 @@ Tests.testVertexAttrib = function(gl, pr
   varying vec4 texCoord0;
   void main()
   {
     gl_Position = vec4(Vertex * Normal, 1.0);
     texCoord0 = vec4(Tex,0.0,0.0) + gl_Position;
   }
 </script>
 <script id="frag" type="x-shader/x-fragment">
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec4 texCoord0;
   void main()
   {
     vec4 c = texCoord0;
     gl_FragColor = c;
   }
 </script>
 
--- a/content/canvas/test/webgl/conformance/more/functions/vertexAttribPointer.html
+++ b/content/canvas/test/webgl/conformance/more/functions/vertexAttribPointer.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 var verts = [0.0, 0.0, 0.0,   1.0, 0.0, 0.0,   0.0, 1.0, 0.0];
 var normals = [0.0, 0.0, 1.0,   0.0, 0.0, 1.0,   0.0, 0.0, 1.0];
 var texcoords = [0.0,0.0,  1.0,0.0,  0.0,1.0];
@@ -84,18 +84,19 @@ Tests.testVertexAttribPointerVBO = funct
   varying vec4 texCoord0;
   void main()
   {
     gl_Position = vec4(Vertex * Normal, 1.0);
     texCoord0 = vec4(Tex,0.0,0.0) + gl_Position;
   }
 </script>
 <script id="frag" type="x-shader/x-fragment">
-  precision mediump float;
-
+  #ifdef GL_ES
+  precision highp float;
+  #endif
   varying vec4 texCoord0;
   void main()
   {
     vec4 c = texCoord0;
     gl_FragColor = c;
   }
 </script>
 
--- a/content/canvas/test/webgl/conformance/more/functions/vertexAttribPointerBadArgs.html
+++ b/content/canvas/test/webgl/conformance/more/functions/vertexAttribPointerBadArgs.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 var verts = [0.0, 0.0, 0.0,   1.0, 0.0, 0.0,   0.0, 1.0, 0.0];
 var normals = [0.0, 0.0, 1.0,   0.0, 0.0, 1.0,   0.0, 0.0, 1.0];
 var texcoords = [0.0,0.0,  1.0,0.0,  0.0,1.0];
@@ -109,18 +109,19 @@ Tests.testVertexAttribPointerVBO = funct
   varying vec4 texCoord0;
   void main()
   {
     gl_Position = vec4(Vertex * Normal, 1.0);
     texCoord0 = vec4(Tex,0.0,0.0) + gl_Position;
   }
 </script>
 <script id="frag" type="x-shader/x-fragment">
-  precision mediump float;
-
+  #ifdef GL_ES
+  precision highp float;
+  #endif
   varying vec4 texCoord0;
   void main()
   {
     vec4 c = texCoord0;
     gl_FragColor = c;
   }
 </script>
 
--- a/content/canvas/test/webgl/conformance/more/glsl/arrayOutOfBounds.html
+++ b/content/canvas/test/webgl/conformance/more/glsl/arrayOutOfBounds.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = canvas.getContext(GL_CONTEXT_ID);
@@ -164,86 +164,91 @@ arr.forEach(function(e){
     TexCoord = Tex;
     gl_Position = vec4(Vertex, 0.0);
   }
 </script>
 
 <script id="okfrag" type="x-shader/x-fragment">
 
 
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec2 TexCoord;
 
   void main()
   {
     float x[3];
     x[0] = 1.0;
     x[1] = 2.0;
     x[2] = 3.0;
     gl_FragColor = vec4(1.0, 0.0, TexCoord.s, x[2]);
   }
 </script>
 <script id="crfrag" type="x-shader/x-fragment">
 
 
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec2 TexCoord;
 
   void main()
   {
     float x[3];
     x[0] = 1.0;
     x[1] = 2.0;
     x[2] = 3.0;
     gl_FragColor = vec4(1.0, 0.0, TexCoord.s, x[4]);
   }
 </script>
 <script id="cwfrag" type="x-shader/x-fragment">
 
 
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec2 TexCoord;
 
   void main()
   {
     float x[3];
     x[0] = 1.0;
     x[1] = 2.0;
     x[2] = 3.0;
 
     x[4] = 6.0;
     gl_FragColor = vec4(1.0, 0.0, TexCoord.s, x[4]);
   }
 </script>
 <script id="vrfrag" type="x-shader/x-fragment">
 
 
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec2 TexCoord;
 
   void main()
   {
     float x[3];
     x[0] = 1.0;
     x[1] = 2.0;
     x[2] = 3.0;
 
     int idx = 4 * int(max(1.0, TexCoord.x*20.0));
     gl_FragColor = vec4(1.0, 0.0, TexCoord.s, x[idx]);
   }
 </script>
 <script id="vwfrag" type="x-shader/x-fragment">
 
 
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec2 TexCoord;
 
   void main()
   {
     float x[3];
     x[0] = 1.0;
     x[1] = 2.0;
     x[2] = 3.0;
@@ -251,18 +256,19 @@ arr.forEach(function(e){
     int idx = 4 * int(max(1.0, TexCoord.x*20.0));
     x[idx] = 6.0;
     gl_FragColor = vec4(1.0, 0.0, TexCoord.s, x[idx]);
   }
 </script>
 <script id="frag" type="x-shader/x-fragment">
 
 
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec2 TexCoord;
 
   void main()
   {
     gl_FragColor = vec4(1.0, 0.0, TexCoord.s, 1.0);
   }
 </script>
 
--- a/content/canvas/test/webgl/conformance/more/glsl/longLoops.html
+++ b/content/canvas/test/webgl/conformance/more/glsl/longLoops.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = canvas.getContext(GL_CONTEXT_ID);
@@ -82,17 +82,19 @@ Tests.testMandelbrot = function(gl) {
   varying vec2 texCoord0;
   void main()
   {
     texCoord0 = vec2(Tex.s, Tex.t);
     gl_Position = vec4(Vertex, 1.0);
   }
 </script>
 <script id="mandelbrot-frag" type="x-shader/x-fragment">
-    precision mediump float;
+    #ifdef GL_ES
+precision highp float;
+#endif
 
     uniform float x,y,z;
     varying vec2 texCoord0;
     vec4 iter_z(float cr, float ci) {
         int i;
         float nzr, nzi, zr = 0.0, zi = 0.0;
         vec4 color = vec4(0.0);
         for (i=0; i<2500; i++) {
@@ -177,73 +179,78 @@ Tests.testMandelbrot = function(gl) {
         TexCoord = Tex.st;
         gl_Position = vec4(Vertex, 0.0);
     }
 </script>
 
 <script id="whiletruefrag" type="x-shader/x-fragment">
 
 
-    precision mediump float;
-
+    #ifdef GL_ES
+precision highp float;
+#endif
     varying vec2 TexCoord;
     void main()
     {
         float z = 1.0;
         while(true) { z += 0.1; z *= 0.995; }
         gl_FragColor = vec4(1.0, TexCoord.s, TexCoord.t, z);
     }
 </script>
 <script id="loop100Mfrag" type="x-shader/x-fragment">
 
 
-    precision mediump float;
-
+    #ifdef GL_ES
+precision highp float;
+#endif
     varying vec2 TexCoord;
     void main()
     {
         int i;
         float z = 1.0;
         for (i = 0; i<1000000000; i++) {
             z += 0.1; z *= 0.995;
         }
         gl_FragColor = vec4(1.0, TexCoord.s, TexCoord.t, z);
     }
 </script>
 <script id="loopCompfrag" type="x-shader/x-fragment">
 
 
-    precision mediump float;
-
+    #ifdef GL_ES
+precision highp float;
+#endif
     varying vec2 TexCoord;
     void main()
     {
         float z = TexCoord.s;
         while(z > 0.0) { z += 0.1; z *= 0.995; }
         gl_FragColor = vec4(1.0, TexCoord.s, TexCoord.t, z);
     }
 </script>
 <script id="variablefrag" type="x-shader/x-fragment">
 
 
-    precision mediump float;
-
+    #ifdef GL_ES
+precision highp float;
+#endif
     varying vec2 TexCoord;
     void main()
     {
         float z = 1.0;
         while(z > TexCoord.s) { z += 0.1; z *= 0.995; }
         gl_FragColor = vec4(1.0, TexCoord.s, TexCoord.t, z);
     }
 </script>
 <script id="frag" type="x-shader/x-fragment">
 
 
-  precision mediump float;
-
+  #ifdef GL_ES
+precision highp float;
+#endif
   varying vec2 TexCoord;
   void main()
   {
     gl_FragColor = vec4(1.0, TexCoord.s, TexCoord.t, 1.0);
   }
 </script>
 
 
--- a/content/canvas/test/webgl/conformance/more/glsl/uniformOutOfBounds.html
+++ b/content/canvas/test/webgl/conformance/more/glsl/uniformOutOfBounds.html
@@ -1,15 +1,14 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head>
-<meta charset="utf-8">
 <!--
 Tests for the OpenGL ES 2.0 HTML Canvas context
 
-Copyright (C) 2011  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
+Copyright (C) 2009  Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
 files (the "Software"), to deal in the Software without
 restriction, including without limitation the rights to use,
 copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following
@@ -23,16 +22,17 @@ EXPRESS OR IMPLIED, INCLUDING BUT NOT LI
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 -->
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <link rel="stylesheet" type="text/css" href="../unit.css" />
 <script type="application/x-javascript" src="../unit.js"></script>
 <script type="application/x-javascript" src="../util.js"></script>
 <script type="application/x-javascript">
 
 Tests.startUnit = function () {
   var canvas = document.getElementById('gl');
   var gl = canvas.getContext(GL_CONTEXT_ID);
@@ -126,89 +126,95 @@ arr.forEach(function(e){
     TexCoord = Vertex.st;
     gl_Position = vec4(Vertex, Tex.s);
   }
 </script>
 
 <scri