| OLD | NEW | 
 | (Empty) | 
|    1 <html> |  | 
|    2 <head> |  | 
|    3 <script src="../../../http/tests/inspector/inspector-test.js"></script> |  | 
|    4 <script> |  | 
|    5  |  | 
|    6 function wasError(gl) |  | 
|    7 { |  | 
|    8     var result = false; |  | 
|    9     while (gl.getError() !== gl.NO_ERROR) |  | 
|   10         result = true; |  | 
|   11     return result; |  | 
|   12 } |  | 
|   13  |  | 
|   14 function createWebGLContext() |  | 
|   15 { |  | 
|   16     var canvas = document.createElement("canvas"); |  | 
|   17     var contextIds = ["experimental-webgl", "webkit-3d", "3d"]; |  | 
|   18     for (var i = 0, contextId; contextId = contextIds[i]; ++i) { |  | 
|   19         var gl = canvas.getContext(contextId); |  | 
|   20         if (gl) |  | 
|   21             return gl; |  | 
|   22     } |  | 
|   23     output("ERROR: Could not create a WebGL context."); |  | 
|   24     return null; |  | 
|   25 } |  | 
|   26  |  | 
|   27 WebGLRenderingContextResource = {}; |  | 
|   28   |  | 
|   29 /** |  | 
|   30  * @const |  | 
|   31  * @type {Array.<string>} |  | 
|   32  */ |  | 
|   33 WebGLRenderingContextResource.GLCapabilities = [ |  | 
|   34     "BLEND", |  | 
|   35     "CULL_FACE", |  | 
|   36     "DEPTH_TEST", |  | 
|   37     "DITHER", |  | 
|   38     "POLYGON_OFFSET_FILL", |  | 
|   39     "SAMPLE_ALPHA_TO_COVERAGE", |  | 
|   40     "SAMPLE_COVERAGE", |  | 
|   41     "SCISSOR_TEST", |  | 
|   42     "STENCIL_TEST" |  | 
|   43 ]; |  | 
|   44  |  | 
|   45 /** |  | 
|   46  * @const |  | 
|   47  * @type {Array.<string>} |  | 
|   48  */ |  | 
|   49 WebGLRenderingContextResource.PixelStoreParameters = [ |  | 
|   50     "PACK_ALIGNMENT", |  | 
|   51     "UNPACK_ALIGNMENT", |  | 
|   52     "UNPACK_COLORSPACE_CONVERSION_WEBGL", |  | 
|   53     "UNPACK_FLIP_Y_WEBGL", |  | 
|   54     "UNPACK_PREMULTIPLY_ALPHA_WEBGL" |  | 
|   55 ]; |  | 
|   56  |  | 
|   57 /** |  | 
|   58  * @const |  | 
|   59  * @type {Array.<string>} |  | 
|   60  */ |  | 
|   61 WebGLRenderingContextResource.StateParameters = [ |  | 
|   62     "ACTIVE_TEXTURE", |  | 
|   63     "ARRAY_BUFFER_BINDING", |  | 
|   64     "BLEND_COLOR", |  | 
|   65     "BLEND_DST_ALPHA", |  | 
|   66     "BLEND_DST_RGB", |  | 
|   67     "BLEND_EQUATION_ALPHA", |  | 
|   68     "BLEND_EQUATION_RGB", |  | 
|   69     "BLEND_SRC_ALPHA", |  | 
|   70     "BLEND_SRC_RGB", |  | 
|   71     "COLOR_CLEAR_VALUE", |  | 
|   72     "COLOR_WRITEMASK", |  | 
|   73     "CULL_FACE_MODE", |  | 
|   74     "CURRENT_PROGRAM", |  | 
|   75     "DEPTH_CLEAR_VALUE", |  | 
|   76     "DEPTH_FUNC", |  | 
|   77     "DEPTH_RANGE", |  | 
|   78     "DEPTH_WRITEMASK", |  | 
|   79     "ELEMENT_ARRAY_BUFFER_BINDING", |  | 
|   80     "FRAMEBUFFER_BINDING", |  | 
|   81     "FRONT_FACE", |  | 
|   82     "GENERATE_MIPMAP_HINT", |  | 
|   83     "LINE_WIDTH", |  | 
|   84     "PACK_ALIGNMENT", |  | 
|   85     "POLYGON_OFFSET_FACTOR", |  | 
|   86     "POLYGON_OFFSET_UNITS", |  | 
|   87     "RENDERBUFFER_BINDING", |  | 
|   88     "SAMPLE_COVERAGE_INVERT", |  | 
|   89     "SAMPLE_COVERAGE_VALUE", |  | 
|   90     "SCISSOR_BOX", |  | 
|   91     "STENCIL_BACK_FAIL", |  | 
|   92     "STENCIL_BACK_FUNC", |  | 
|   93     "STENCIL_BACK_PASS_DEPTH_FAIL", |  | 
|   94     "STENCIL_BACK_PASS_DEPTH_PASS", |  | 
|   95     "STENCIL_BACK_REF", |  | 
|   96     "STENCIL_BACK_VALUE_MASK", |  | 
|   97     "STENCIL_BACK_WRITEMASK", |  | 
|   98     "STENCIL_CLEAR_VALUE", |  | 
|   99     "STENCIL_FAIL", |  | 
|  100     "STENCIL_FUNC", |  | 
|  101     "STENCIL_PASS_DEPTH_FAIL", |  | 
|  102     "STENCIL_PASS_DEPTH_PASS", |  | 
|  103     "STENCIL_REF", |  | 
|  104     "STENCIL_VALUE_MASK", |  | 
|  105     "STENCIL_WRITEMASK", |  | 
|  106     "UNPACK_ALIGNMENT", |  | 
|  107     "UNPACK_COLORSPACE_CONVERSION_WEBGL", |  | 
|  108     "UNPACK_FLIP_Y_WEBGL", |  | 
|  109     "UNPACK_PREMULTIPLY_ALPHA_WEBGL", |  | 
|  110     "VIEWPORT" |  | 
|  111 ]; |  | 
|  112  |  | 
|  113 WebGLRenderingContextResource.TextureBindings = [ |  | 
|  114     "TEXTURE_BINDING_2D", |  | 
|  115     "TEXTURE_BINDING_CUBE_MAP" |  | 
|  116 ]; |  | 
|  117  |  | 
|  118 function test() |  | 
|  119 { |  | 
|  120     var gl = createWebGLContext(); |  | 
|  121     if (!gl) |  | 
|  122         return; |  | 
|  123  |  | 
|  124     var constantNames = []; |  | 
|  125     for (var property in gl) { |  | 
|  126         if (/^[A-Z0-9_]+$/.test(property)) |  | 
|  127             constantNames.push(property); |  | 
|  128     } |  | 
|  129     constantNames.sort(); |  | 
|  130  |  | 
|  131     output("Constants for gl.isEnabled():"); |  | 
|  132     constantNames.forEach(function(property) { |  | 
|  133         wasError(gl); |  | 
|  134         gl.isEnabled(gl[property]); |  | 
|  135         if (!wasError(gl)) |  | 
|  136             output(property); |  | 
|  137     }); |  | 
|  138  |  | 
|  139     output("\nConstants for gl.pixelStorei():"); |  | 
|  140     constantNames.forEach(function(property) { |  | 
|  141         wasError(gl); |  | 
|  142         var value = gl.getParameter(gl[property]); |  | 
|  143         if (wasError(gl)) |  | 
|  144             return; |  | 
|  145         gl.pixelStorei(gl[property], value); |  | 
|  146         if (!wasError(gl)) |  | 
|  147             output(property); |  | 
|  148     }); |  | 
|  149  |  | 
|  150     output("\nConstants for gl.getTexParameter():"); |  | 
|  151     var texture = gl.createTexture(); |  | 
|  152     gl.bindTexture(gl.TEXTURE_2D, texture); |  | 
|  153     constantNames.forEach(function(property) { |  | 
|  154         wasError(gl); |  | 
|  155         gl.getTexParameter(gl.TEXTURE_2D, gl[property]); |  | 
|  156         if (!wasError(gl)) |  | 
|  157             output(property); |  | 
|  158     }); |  | 
|  159  |  | 
|  160     output("\nConstants for gl.getVertexAttrib():"); |  | 
|  161     constantNames.forEach(function(property) { |  | 
|  162         wasError(gl); |  | 
|  163         gl.getVertexAttrib(0, gl[property]); |  | 
|  164         if (!wasError(gl)) |  | 
|  165             output(property); |  | 
|  166     }); |  | 
|  167  |  | 
|  168     output("\nConstants for gl.getVertexAttribOffset():"); |  | 
|  169     constantNames.forEach(function(property) { |  | 
|  170         wasError(gl); |  | 
|  171         gl.getVertexAttribOffset(0, gl[property]); |  | 
|  172         if (!wasError(gl)) |  | 
|  173             output(property); |  | 
|  174     }); |  | 
|  175  |  | 
|  176     output("\nConstants for gl.getParameter() that we do not track in InjectedSc
     riptModule:"); |  | 
|  177     constantNames.forEach(function(property) { |  | 
|  178         // Special case for equal constants BLEND_EQUATION and BLEND_EQUATION_RG
     B. |  | 
|  179         if (property === "BLEND_EQUATION" && gl.BLEND_EQUATION === gl.BLEND_EQUA
     TION_RGB) |  | 
|  180             return; |  | 
|  181         if (WebGLRenderingContextResource.GLCapabilities.indexOf(property) !== -
     1) |  | 
|  182             return; |  | 
|  183         if (WebGLRenderingContextResource.PixelStoreParameters.indexOf(property)
      !== -1) |  | 
|  184             return; |  | 
|  185         if (WebGLRenderingContextResource.StateParameters.indexOf(property) !== 
     -1) |  | 
|  186             return; |  | 
|  187         if (WebGLRenderingContextResource.TextureBindings.indexOf(property) !== 
     -1) |  | 
|  188             return; |  | 
|  189         wasError(gl); |  | 
|  190         gl.getParameter(gl[property]); |  | 
|  191         if (!wasError(gl)) |  | 
|  192             output(property); |  | 
|  193     }); |  | 
|  194 } |  | 
|  195  |  | 
|  196 function runTest() |  | 
|  197 { |  | 
|  198     if (window.testRunner) { |  | 
|  199         testRunner.overridePreference("WebKitWebGLEnabled", "1"); |  | 
|  200         testRunner.dumpAsText(); |  | 
|  201         testRunner.waitUntilDone(); |  | 
|  202     } |  | 
|  203     if (window.internals) |  | 
|  204         window.internals.settings.setWebGLErrorsToConsoleEnabled(false); |  | 
|  205     try { |  | 
|  206         test(); |  | 
|  207     } finally { |  | 
|  208         if (window.testRunner) |  | 
|  209             testRunner.notifyDone(); |  | 
|  210     } |  | 
|  211 } |  | 
|  212  |  | 
|  213 </script> |  | 
|  214 </head> |  | 
|  215 <body onload="runTest()"> |  | 
|  216 <p> |  | 
|  217 Test to catch WebGL API changes. |  | 
|  218 If this test should ever fail, we should re-examine the WebGL state saving/resto
     ring logic in the |  | 
|  219 InjectedScriptModule to include any latest changes to the API. |  | 
|  220  |  | 
|  221 </p> |  | 
|  222 </body> |  | 
|  223 </html> |  | 
| OLD | NEW |