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
--- 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')