Bug 1271830 - r?jrmuizel - Update ensure-exts to check webgl2 draft
authorJeff Gilbert <jdashg@gmail.com>
Mon, 09 May 2016 18:38:12 -0700
changeset 365489 692be8d04522f53c09b4c037fba79a1bc62eae54
parent 365273 1579b9e2e50f3a27ad02d58cc9170c91e0973fec
child 365490 6cb295305b4afe248d3e5c73f61f380f1ca67c65
push id17760
push userjgilbert@mozilla.com
push dateTue, 10 May 2016 22:28:03 +0000
reviewersjrmuizel
bugs1271830, 100644
milestone49.0a1
Bug 1271830 - r?jrmuizel - Update ensure-exts to check webgl2 From 6487eed79e4a360d9f92c3d5636ec34ab3d3b0cd Mon Sep 17 00:00:00 2001 contexts. --- .../test/webgl-mochitest/ensure-exts/ensure-ext.js | 26 +++- .../ensure-exts/test_ANGLE_instanced_arrays.html | 2 +- .../ensure-exts/test_EXT_blend_minmax.html | 2 +- .../ensure-exts/test_EXT_color_buffer_float.html | 17 +++ .../test_EXT_color_buffer_half_float.html | 2 +- .../ensure-exts/test_EXT_disjoint_timer_query.html | 4 +- .../ensure-exts/test_EXT_frag_depth.html | 2 +- .../webgl-mochitest/ensure-exts/test_EXT_sRGB.html | 2 +- .../ensure-exts/test_EXT_shader_texture_lod.html | 2 +- .../ensure-exts/test_OES_standard_derivatives.html | 2 +- .../ensure-exts/test_WEBGL_color_buffer_float.html | 2 +- .../test_WEBGL_compressed_texture_es3.html | 4 +- .../ensure-exts/test_WEBGL_depth_texture.html | 2 +- .../ensure-exts/test_WEBGL_draw_buffers.html | 2 +- .../webgl-mochitest/ensure-exts/test_common.html | 143 +++++++++++++-------- dom/canvas/test/webgl-mochitest/mochitest.ini | 2 + 16 files changed, 143 insertions(+), 73 deletions(-) create mode 100644 dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_color_buffer_float.html MozReview-Commit-ID: GIZ4oAb7eJl
dom/canvas/test/webgl-mochitest/ensure-exts/ensure-ext.js
dom/canvas/test/webgl-mochitest/ensure-exts/test_ANGLE_instanced_arrays.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_blend_minmax.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_color_buffer_float.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_color_buffer_half_float.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_disjoint_timer_query.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_frag_depth.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_sRGB.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_shader_texture_lod.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_OES_standard_derivatives.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_color_buffer_float.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_compressed_texture_es3.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_depth_texture.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_draw_buffers.html
dom/canvas/test/webgl-mochitest/ensure-exts/test_common.html
dom/canvas/test/webgl-mochitest/mochitest.ini
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/ensure-ext.js
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/ensure-ext.js
@@ -1,26 +1,38 @@
 'use strict';
 
-function EnsureExt(name, shouldBe = true) {
+function EnsureExt(extName, shouldHave=true) {
+    EnsureExtFor('webgl', extName, shouldHave);
+    EnsureExtFor('webgl2', extName, shouldHave);
+}
+
+function EnsureExtFor(contextType, extName, shouldHave=true) {
     var c = document.createElement('canvas');
-    var gl = c.getContext('experimental-webgl');
+    var gl = c.getContext(contextType);
 
-    if (shouldBe) {
-        ok(gl.getExtension(name), 'Should have extension ' + name + '.');
+    if (!gl) {
+        todo(false, 'Failed to create context: ' + contextType);
+        return;
+    }
+
+    var ext = gl.getExtension(extName);
+    var haveText = ' have ' + contextType + ' extension ' + extName + '.';
+    if (shouldHave) {
+        ok(ext, 'Should' + haveText);
     } else {
-        ok(!gl.getExtension(name), 'Should not have extension ' + name + '.');
+        ok(!ext, 'Should not' + haveText);
     }
 }
 
-function EnsureDraftExt(name, shouldBe = true) {
+function Lastly_WithDraftExtsEnabled(func) {
     SimpleTest.waitForExplicitFinish();
 
     var fnEnsure = function() {
-        EnsureExt(name, shouldBe);
+        func();
         SimpleTest.finish();
     };
 
     if ('SpecialPowers' in window) {
         var prefStateList = [
             ['webgl.enable-draft-extensions', true],
         ];
         var prefEnv = {'set': prefStateList};
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_ANGLE_instanced_arrays.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_ANGLE_instanced_arrays.html
@@ -5,13 +5,13 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureExt('ANGLE_instanced_arrays');
+EnsureExtFor('webgl', 'ANGLE_instanced_arrays');
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_blend_minmax.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_blend_minmax.html
@@ -5,13 +5,13 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureExt('EXT_blend_minmax');
+EnsureExtFor('webgl', 'EXT_blend_minmax');
 
     </script>
   </body>
 </html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_color_buffer_float.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML>
+<html>
+  <head>
+    <meta charset='utf-8'/>
+    <script src='/tests/SimpleTest/SimpleTest.js'></script>
+    <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
+    <script src='ensure-ext.js'></script>
+  </head>
+  <body>
+    <script>
+
+'use strict';
+EnsureExtFor('webgl2', 'EXT_color_buffer_float');
+
+    </script>
+  </body>
+</html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_color_buffer_half_float.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_color_buffer_half_float.html
@@ -5,13 +5,13 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureExt('EXT_color_buffer_half_float');
+EnsureExtFor('webgl', 'EXT_color_buffer_half_float');
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_disjoint_timer_query.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_disjoint_timer_query.html
@@ -5,13 +5,15 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureDraftExt('EXT_disjoint_timer_query');
+Lastly_WithDraftExtsEnabled(function() {
+    EnsureExt('EXT_disjoint_timer_query');
+});
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_frag_depth.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_frag_depth.html
@@ -5,13 +5,13 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureExt('EXT_frag_depth');
+EnsureExtFor('webgl', 'EXT_frag_depth');
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_sRGB.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_sRGB.html
@@ -5,13 +5,13 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureExt('EXT_sRGB');
+EnsureExtFor('webgl', 'EXT_sRGB');
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_shader_texture_lod.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_EXT_shader_texture_lod.html
@@ -5,13 +5,13 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureExt('EXT_shader_texture_lod');
+EnsureExtFor('webgl', 'EXT_shader_texture_lod');
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_OES_standard_derivatives.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_OES_standard_derivatives.html
@@ -5,13 +5,13 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureExt('OES_standard_derivatives');
+EnsureExtFor('webgl', 'OES_standard_derivatives');
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_color_buffer_float.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_color_buffer_float.html
@@ -5,13 +5,13 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureExt('WEBGL_color_buffer_float');
+EnsureExtFor('webgl', 'WEBGL_color_buffer_float');
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_compressed_texture_es3.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_compressed_texture_es3.html
@@ -5,13 +5,15 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureDraftExt('WEBGL_compressed_texture_es3');
+Lastly_WithDraftExtsEnabled(function() {
+    EnsureExt('WEBGL_compressed_texture_es3');
+});
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_depth_texture.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_depth_texture.html
@@ -5,13 +5,13 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureExt('WEBGL_depth_texture');
+EnsureExtFor('webgl', 'WEBGL_depth_texture');
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_draw_buffers.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_draw_buffers.html
@@ -5,13 +5,13 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-EnsureExt('WEBGL_draw_buffers');
+EnsureExtFor('webgl', 'WEBGL_draw_buffers');
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_common.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_common.html
@@ -1,75 +1,110 @@
 <!DOCTYPE HTML>
 <html>
   <head>
     <meta charset='utf-8'/>
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
+    <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
 
-var c = document.createElement('canvas');
-var gl = c.getContext('experimental-webgl');
+var ENSURE = 'ENSURE'; // Works on all test machines.
+var FORBID = 'FORBID'; // Should not work on any test machine.
+var MACHINE_SPECIFIC = 'MACHINE_SPECIFIC';
+
+var defaultExts = [
+    // Ratified
+    ['ANGLE_instanced_arrays'        , [MACHINE_SPECIFIC, FORBID          ]],
+    ['EXT_blend_minmax'              , [MACHINE_SPECIFIC, FORBID          ]],
+    ['EXT_frag_depth'                , [MACHINE_SPECIFIC, FORBID          ]],
+    ['EXT_shader_texture_lod'        , [MACHINE_SPECIFIC, FORBID          ]],
+    ['EXT_texture_filter_anisotropic', [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
+    ['OES_element_index_uint'        , [ENSURE          , FORBID          ]],
+    ['OES_standard_derivatives'      , [MACHINE_SPECIFIC, FORBID          ]],
+    ['OES_texture_float'             , [ENSURE          , FORBID          ]],
+    ['OES_texture_float_linear'      , [ENSURE          , ENSURE          ]],
+    ['OES_texture_half_float'        , [ENSURE          , FORBID          ]],
+    ['OES_texture_half_float_linear' , [ENSURE          , FORBID          ]],
+    ['OES_vertex_array_object'       , [ENSURE          , FORBID          ]],
+    ['WEBGL_compressed_texture_s3tc' , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
+//  ['WEBGL_debug_renderer_info'     , [FORBID          , FORBID          ]], // Complicated!
+    ['WEBGL_debug_shaders'           , [FORBID          , FORBID          ]],
+    ['WEBGL_depth_texture'           , [MACHINE_SPECIFIC, FORBID          ]],
+    ['WEBGL_draw_buffers'            , [MACHINE_SPECIFIC, FORBID          ]],
+    ['WEBGL_lose_context'            , [ENSURE          , ENSURE          ]],
 
-function ensureExt(name) {
-  ok(gl.getExtension(name), 'Should have extension ' + name + '.');
-}
+    // Community Approved
+    ['EXT_color_buffer_float'        , [FORBID          , MACHINE_SPECIFIC]],
+    ['EXT_color_buffer_half_float'   , [MACHINE_SPECIFIC, FORBID          ]],
+    ['EXT_sRGB'                      , [MACHINE_SPECIFIC, FORBID          ]],
+    ['WEBGL_color_buffer_float'      , [MACHINE_SPECIFIC, FORBID          ]],
+    ['WEBGL_compressed_texture_atc'  , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
+    ['WEBGL_compressed_texture_etc1' , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
+    ['WEBGL_compressed_texture_pvrtc', [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
+];
+
+var draftExts = [
+    ['EXT_disjoint_timer_query'    , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]], // TODO: Actually Community Approved now.
+    ['WEBGL_compressed_texture_es3', [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
+];
 
-function ensureNoExt(name) {
-  ok(!gl.getExtension(name), 'Should not have extension ' + name + '.');
+var nonImplementedExts = [
+    'OES_fbo_render_mipmap',
+    'WEBGL_compressed_texture_astc',
+    'WEBGL_security_sensitive_resources',
+    'WEBGL_shared_resources',
+];
+
+////////////////////
+
+function TestExtFor(contextType, extName, status) {
+    switch (status) {
+    case ENSURE:
+        EnsureExtFor(contextType, extName);
+        break;
+
+    case FORBID:
+        EnsureExtFor(contextType, extName, false);
+        break;
+
+    case MACHINE_SPECIFIC:
+        break;
+    }
 }
 
-do {
-  if (!gl)
-    break;
+function TestExt(extName, statusArr) {
+    TestExtFor('webgl', extName, statusArr[0]);
+    TestExtFor('webgl2', extName, statusArr[1]);
+}
 
-  // These aren't all guaranteed, but they're common to all our test slaves.
-  // If you're adding a slave config that is missing one of these, comment the line out
-  // and split it into its own test.
+////////////////////
+
+defaultExts.forEach(function(x) {
+    var extName = x[0];
+    var statusArr = x[1];
+    TestExt(extName, statusArr);
+});
 
-  // Implemented. (commented out if not test-slave-universal)
-  //ensureExt('ANGLE_instanced_arrays');
-  //ensureExt('EXT_blend_minmax');
-  //ensureExt('EXT_color_buffer_half_float');
-  //ensureExt('EXT_frag_depth');
-  //ensureExt('EXT_shader_texture_lod');
-  //ensureExt('EXT_sRGB');
-  //ensureExt('EXT_texture_filter_anisotropic');
-  ensureExt('OES_element_index_uint');
-  //ensureExt('OES_standard_derivatives');
-  ensureExt('OES_texture_float');
-  ensureExt('OES_texture_float_linear');
-  ensureExt('OES_texture_half_float');
-  ensureExt('OES_texture_half_float_linear');
-  ensureExt('OES_vertex_array_object');
-  //ensureExt('WEBGL_color_buffer_float');
-  //ensureExt('WEBGL_compressed_texture_atc');
-  //ensureExt('WEBGL_compressed_texture_es3');
-  //ensureExt('WEBGL_compressed_texture_etc1');
-  //ensureExt('WEBGL_compressed_texture_pvrtc');
-  //ensureExt('WEBGL_compressed_texture_s3tc');
-  //ensureExt('WEBGL_depth_texture');
-  //ensureExt('WEBGL_draw_buffers');
-  ensureExt('WEBGL_lose_context');
+nonImplementedExts.forEach(function(extName) {
+    EnsureExt(extName, false);
+});
 
-  // Draft extensions, which should not be exposed by default.
-  ensureNoExt('EXT_disjoint_timer_query');
-  ensureNoExt('WEBGL_compressed_texture_es3');
+draftExts.forEach(function(x) {
+    var extName = x[0];
+    EnsureExt(extName, false);
+});
 
-  // Not implemented.
-  ensureNoExt('EXT_color_buffer_float');
-  ensureNoExt('OES_fbo_render_mipmap');
-  ensureNoExt('WEBGL_compressed_texture_astc');
-  ensureNoExt('WEBGL_security_sensitive_resources');
-  ensureNoExt('WEBGL_shared_resources');
-
-  // Privileged
-  //ensureExt('WEBGL_debug_renderer_info');
-  //ensureExt('WEBGL_debug_shaders');
-} while (false);
+Lastly_WithDraftExtsEnabled(function() {
+    draftExts.forEach(function(x) {
+        var extName = x[0];
+        var statusArr = x[1];
+        TestExt(extName, statusArr);
+    });
+});
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/mochitest.ini
+++ b/dom/canvas/test/webgl-mochitest/mochitest.ini
@@ -7,16 +7,18 @@ support-files =
   driver-info.js
   es3-data.js
   webgl-util.js
 
 [ensure-exts/test_ANGLE_instanced_arrays.html]
 fail-if = (os == 'android') || (os == 'mac' && os_version == '10.6')
 [ensure-exts/test_EXT_blend_minmax.html]
 fail-if = (os == 'android')
+[ensure-exts/test_EXT_color_buffer_float.html]
+fail-if = (os == 'android')
 [ensure-exts/test_EXT_color_buffer_half_float.html]
 fail-if = (os == 'android')
 [ensure-exts/test_EXT_disjoint_timer_query.html]
 fail-if = (os == 'android') || (os == 'mac') || (os == 'win')
 [ensure-exts/test_EXT_frag_depth.html]
 fail-if = (os == 'android')
 [ensure-exts/test_EXT_sRGB.html]
 fail-if = (os == 'android') || (os == 'mac' && os_version == '10.6') || (os == 'win')