Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(141)

Unified Diff: tests/html/webgl_extensions_test.dart

Issue 2150003002: Recognize WEBGL extensions on Firefox (copy with regenerated files) (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/html/html.status ('k') | tools/dom/scripts/generator.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/html/webgl_extensions_test.dart
diff --git a/tests/html/webgl_extensions_test.dart b/tests/html/webgl_extensions_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..07232f083d54e6443d749dbf8abaf6250acb60c2
--- /dev/null
+++ b/tests/html/webgl_extensions_test.dart
@@ -0,0 +1,199 @@
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library web_gl_test;
+
+import 'package:unittest/unittest.dart';
+import 'package:unittest/html_individual_config.dart';
+import 'dart:html';
+import 'dart:typed_data';
+import 'dart:web_gl';
+import 'dart:web_gl' as gl;
+
+// Test that various webgl extensions are available. Only test advertised
+// supported extensions. If the extension has methods, we just test the presence
+// of some methods - we don't test if functionality works.
+
+main() {
+ useHtmlIndividualConfiguration();
+
+ if (!RenderingContext.supported) return;
+
+
+ const allExtensions = const [
+ 'ANGLE_instanced_arrays',
+ 'EXT_blend_minmax',
+ 'EXT_color_buffer_float',
+ 'EXT_color_buffer_half_float',
+ 'EXT_disjoint_timer_query',
+ 'EXT_frag_depth',
+ 'EXT_sRGB',
+ 'EXT_shader_texture_lod',
+ 'EXT_texture_filter_anisotropic',
+ 'OES_element_index_uint',
+ 'OES_standard_derivatives',
+ 'OES_texture_float',
+ 'OES_texture_float_linear',
+ 'OES_texture_half_float',
+ 'OES_texture_half_float_linear',
+ 'OES_vertex_array_object',
+ 'WEBGL_color_buffer_float',
+ 'WEBGL_compressed_texture_atc',
+ 'WEBGL_compressed_texture_es3',
+ 'WEBGL_compressed_texture_etc1',
+ 'WEBGL_compressed_texture_pvrtc',
+ 'WEBGL_compressed_texture_s3tc',
+ 'WEBGL_debug_renderer_info',
+ 'WEBGL_debug_shaders',
+ 'WEBGL_depth_texture',
+ 'WEBGL_draw_buffers',
+ 'WEBGL_lose_context',
+ ];
+
+ getExtension(String name) {
+ expect(name, isIn(allExtensions), reason: 'unknown extension');
+ var canvas = new CanvasElement();
+ var context = canvas.getContext3d();
+ var supportedExtensions = context.getSupportedExtensions();
+ if (supportedExtensions.contains(name)) {
+ var extension = context.getExtension(name);
+ expect(extension, isNotNull);
+ return extension;
+ }
+ return null;
+ }
+
+ testType(name, typeMatcher) {
+ test('type', () {
+ var extension = getExtension(name);
+ if (extension == null) return;
+ expect(extension, typeMatcher);
+ // Ensure that isInstanceOf<X> is not instantiated for an erroneous type
+ // X. If X is erroneous, there is only a warning at compile time and X is
+ // treated as dynamic, which would make the above line pass.
+ expect(1, isNot(typeMatcher), reason: 'invalid typeMatcher');
+ });
+ }
+
+ group('ANGLE_instanced_arrays', () {
+ const name = 'ANGLE_instanced_arrays';
+ testType(name, const isInstanceOf<AngleInstancedArrays>());
+ test('vertexAttribDivisorAngle', () {
+ var extension = getExtension(name);
+ if (extension == null) return;
+ expect(extension.vertexAttribDivisorAngle, isFunction);
+ });
+ });
+
+ group('EXT_blend_minmax', () {
+ testType('EXT_blend_minmax', const isInstanceOf<ExtBlendMinMax>());
+ });
+
+ group('EXT_frag_depth', () {
+ testType('EXT_frag_depth', const isInstanceOf<ExtFragDepth>());
+ });
+
+ group('EXT_sRGB', () {
+ testType('EXT_sRGB', const isInstanceOf<EXTsRgb>());
+ });
+
+ group('EXT_shader_texture_lod', () {
+ testType(
+ 'EXT_shader_texture_lod', const isInstanceOf<ExtShaderTextureLod>());
+ });
+
+ group('EXT_texture_filter_anisotropic', () {
+ testType('EXT_texture_filter_anisotropic',
+ const isInstanceOf<ExtTextureFilterAnisotropic>());
+ });
+
+ group('OES_element_index_uint', () {
+ testType(
+ 'OES_element_index_uint', const isInstanceOf<OesElementIndexUint>());
+ });
+
+ group('OES_standard_derivatives', () {
+ testType('OES_standard_derivatives',
+ const isInstanceOf<OesStandardDerivatives>());
+ });
+
+ group('OES_texture_float', () {
+ testType('OES_texture_float', const isInstanceOf<OesTextureFloat>());
+ });
+
+ group('OES_texture_float_linear', () {
+ testType('OES_texture_float_linear',
+ const isInstanceOf<OesTextureFloatLinear>());
+ });
+
+ group('OES_texture_half_float', () {
+ testType(
+ 'OES_texture_half_float', const isInstanceOf<OesTextureHalfFloat>());
+ });
+
+ group('OES_texture_half_float_linear', () {
+ testType('OES_texture_half_float_linear',
+ const isInstanceOf<OesTextureHalfFloatLinear>());
+ });
+
+ group('OES_vertex_array_object', () {
+ testType(
+ 'OES_vertex_array_object', const isInstanceOf<OesVertexArrayObject>());
+ });
+
+ group('WEBGL_compressed_texture_atc', () {
+ testType('WEBGL_compressed_texture_atc',
+ const isInstanceOf<CompressedTextureAtc>());
+ });
+
+ group('WEBGL_compressed_texture_etc1', () {
+ testType('WEBGL_compressed_texture_etc1',
+ const isInstanceOf<CompressedTextureETC1>());
+ });
+
+ group('WEBGL_compressed_texture_pvrtc', () {
+ testType('WEBGL_compressed_texture_pvrtc',
+ const isInstanceOf<CompressedTexturePvrtc>());
+ });
+
+ group('WEBGL_compressed_texture_s3tc', () {
+ testType('WEBGL_compressed_texture_s3tc',
+ const isInstanceOf<CompressedTextureS3TC>());
+ });
+
+ group('WEBGL_debug_renderer_info', () {
+ testType(
+ 'WEBGL_debug_renderer_info', const isInstanceOf<DebugRendererInfo>());
+ });
+
+ group('WEBGL_debug_shaders', () {
+ testType('WEBGL_debug_shaders', const isInstanceOf<DebugShaders>());
+ });
+
+ group('WEBGL_depth_texture', () {
+ testType('WEBGL_depth_texture', const isInstanceOf<DepthTexture>());
+ });
+
+ group('WEBGL_draw_buffers', () {
+ const name = 'WEBGL_draw_buffers';
+ testType(name, const isInstanceOf<DrawBuffers>());
+ test('drawBuffersWebgl', () {
+ var extension = getExtension(name);
+ if (extension == null) return;
+ expect(extension.drawBuffersWebgl, isFunction);
+ });
+ });
+
+ group('WEBGL_lose_context', () {
+ const name = 'WEBGL_lose_context';
+ testType(name, const isInstanceOf<LoseContext>());
+ test('loseContext', () {
+ var extension = getExtension(name);
+ if (extension == null) return;
+ expect(extension.loseContext, isFunction);
+ });
+ });
+}
+
+Matcher isFunction = const isInstanceOf<Function>();
« no previous file with comments | « tests/html/html.status ('k') | tools/dom/scripts/generator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698