Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / content / browser / resources / gpu / browser_bridge_tests.js
blobebff6a775cec23f0a3c96e666af427ec532a49af
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 var commandLineFlags = ['--flag-switches-begin',
5                         '--show-composited-layer-borders',
6                         '--show-fps-counter',
7                         '--flag-switches-end'];
8 var commandLineStr = './out/Debug/chrome ' + commandLineFlags.join(' ');
10 var glValueArray = ['GL_ARB_compatibility',
11                     'GL_ARB_copy_buffer',
12                     'GL_ARB_depth_buffer_float',
13                     'GL_ARB_depth_clamp',
14                     'GL_ARB_depth_texture',
15                     'GL_ARB_draw_buffers',
16                     'GL_ARB_draw_elements_base_vertex',
17                     'GL_ARB_draw_instanced',
18                     'GL_ARB_fragment_coord_conventions',
19                     'GL_ARB_fragment_program',
20                     'GL_ARB_fragment_program_shadow',
21                     'GL_ARB_fragment_shader',
22                     'GL_ARB_framebuffer_object',
23                     'GL_ARB_framebuffer_sRGB',
24                     'GL_ARB_geometry_shader4',
25                     'GL_ARB_half_float_pixel',
26                     'GL_ARB_half_float_vertex',
27                     'GL_ARB_imaging',
28                     'GL_ARB_map_buffer_range',
29                     'GL_ARB_multisample',
30                     'GL_ARB_multitexture',
31                     'GL_ARB_occlusion_query',
32                     'GL_ARB_pixel_buffer_object',
33                     'GL_ARB_point_parameters',
34                     'GL_ARB_point_sprite',
35                     'GL_ARB_provoking_vertex',
36                     'GL_ARB_seamless_cube_map',
37                     'GL_ARB_shader_objects',
38                     'GL_ARB_shading_language_100',
39                     'GL_ARB_shadow',
40                     'GL_ARB_sync',
41                     'GL_ARB_texture_border_clamp',
42                     'GL_ARB_texture_buffer_object',
43                     'GL_ARB_texture_compression',
44                     'GL_ARB_texture_compression_rgtc',
45                     'GL_ARB_texture_cube_map',
46                     'GL_ARB_texture_env_add',
47                     'GL_ARB_texture_env_combine',
48                     'GL_ARB_texture_env_crossbar',
49                     'GL_ARB_texture_env_dot3',
50                     'GL_ARB_texture_float',
51                     'GL_ARB_texture_mirrored_repeat',
52                     'GL_ARB_texture_multisample',
53                     'GL_ARB_texture_non_power_of_two',
54                     'GL_ARB_texture_rectangle',
55                     'GL_ARB_texture_rg',
56                     'GL_ARB_transpose_matrix',
57                     'GL_ARB_uniform_buffer_object',
58                     'GL_ARB_vertex_array_bgra',
59                     'GL_ARB_vertex_array_object',
60                     'GL_ARB_vertex_buffer_object',
61                     'GL_ARB_vertex_program',
62                     'GL_ARB_vertex_shader',
63                     'GL_ARB_window_pos',
64                     'GL_ATI_draw_buffers',
65                     'GL_ATI_texture_float',
66                     'GL_ATI_texture_mirror_once',
67                     'GL_S3_s3tc',
68                     'GL_EXT_texture_env_add',
69                     'GL_EXT_abgr',
70                     'GL_EXT_bgra',
71                     'GL_EXT_bindable_uniform',
72                     'GL_EXT_blend_color',
73                     'GL_EXT_blend_equation_separate',
74                     'GL_EXT_blend_func_separate',
75                     'GL_EXT_blend_minmax',
76                     'GL_EXT_blend_subtract',
77                     'GL_EXT_compiled_vertex_array',
78                     'GL_EXT_Cg_shader',
79                     'GL_EXT_depth_bounds_test',
80                     'GL_EXT_direct_state_access',
81                     'GL_EXT_draw_buffers2',
82                     'GL_EXT_draw_instanced',
83                     'GL_EXT_draw_range_elements',
84                     'GL_EXT_fog_coord',
85                     'GL_EXT_framebuffer_blit',
86                     'GL_EXT_framebuffer_multisample',
87                     'GL_EXTX_framebuffer_mixed_formats',
88                     'GL_EXT_framebuffer_object',
89                     'GL_EXT_framebuffer_sRGB',
90                     'GL_EXT_geometry_shader4',
91                     'GL_EXT_gpu_program_parameters',
92                     'GL_EXT_gpu_shader4',
93                     'GL_EXT_multi_draw_arrays',
94                     'GL_EXT_packed_depth_stencil',
95                     'GL_EXT_packed_float',
96                     'GL_EXT_packed_pixels',
97                     'GL_EXT_pixel_buffer_object',
98                     'GL_EXT_point_parameters',
99                     'GL_EXT_provoking_vertex',
100                     'GL_EXT_rescale_normal',
101                     'GL_EXT_secondary_color',
102                     'GL_EXT_separate_shader_objects',
103                     'GL_EXT_separate_specular_color',
104                     'GL_EXT_shadow_funcs',
105                     'GL_EXT_stencil_two_side',
106                     'GL_EXT_stencil_wrap',
107                     'GL_EXT_texture3D',
108                     'GL_EXT_texture_array',
109                     'GL_EXT_texture_buffer_object',
110                     'GL_EXT_texture_compression_latc',
111                     'GL_EXT_texture_compression_rgtc',
112                     'GL_EXT_texture_compression_s3tc',
113                     'GL_EXT_texture_cube_map',
114                     'GL_EXT_texture_edge_clamp',
115                     'GL_EXT_texture_env_combine',
116                     'GL_EXT_texture_env_dot3',
117                     'GL_EXT_texture_filter_anisotropic',
118                     'GL_EXT_texture_integer',
119                     'GL_EXT_texture_lod',
120                     'GL_EXT_texture_lod_bias',
121                     'GL_EXT_texture_mirror_clamp',
122                     'GL_EXT_texture_object',
123                     'GL_EXT_texture_shared_exponent',
124                     'GL_EXT_texture_sRGB',
125                     'GL_EXT_texture_swizzle',
126                     'GL_EXT_timer_query',
127                     'GL_EXT_vertex_array',
128                     'GL_EXT_vertex_array_bgra',
129                     'GL_IBM_rasterpos_clip',
130                     'GL_IBM_texture_mirrored_repeat',
131                     'GL_KTX_buffer_region',
132                     'GL_NV_blend_square',
133                     'GL_NV_conditional_render',
134                     'GL_NV_copy_depth_to_color',
135                     'GL_NV_copy_image',
136                     'GL_NV_depth_buffer_float',
137                     'GL_NV_depth_clamp',
138                     'GL_NV_explicit_multisample',
139                     'GL_NV_fence',
140                     'GL_NV_float_buffer',
141                     'GL_NV_fog_distance',
142                     'GL_NV_fragment_program',
143                     'GL_NV_fragment_program_option',
144                     'GL_NV_fragment_program2',
145                     'GL_NV_framebuffer_multisample_coverage',
146                     'GL_NV_geometry_shader4',
147                     'GL_NV_gpu_program4',
148                     'GL_NV_half_float',
149                     'GL_NV_light_max_exponent',
150                     'GL_NV_multisample_coverage',
151                     'GL_NV_multisample_filter_hint',
152                     'GL_NV_occlusion_query',
153                     'GL_NV_packed_depth_stencil',
154                     'GL_NV_parameter_buffer_object',
155                     'GL_NV_parameter_buffer_object2',
156                     'GL_NV_pixel_data_range',
157                     'GL_NV_point_sprite',
158                     'GL_NV_primitive_restart',
159                     'GL_NV_register_combiners',
160                     'GL_NV_register_combiners2',
161                     'GL_NV_shader_buffer_load',
162                     'GL_NV_texgen_reflection',
163                     'GL_NV_texture_barrier',
164                     'GL_NV_texture_compression_vtc',
165                     'GL_NV_texture_env_combine4',
166                     'GL_NV_texture_expand_normal',
167                     'GL_NV_texture_rectangle',
168                     'GL_NV_texture_shader',
169                     'GL_NV_texture_shader2',
170                     'GL_NV_texture_shader3',
171                     'GL_NV_transform_feedback',
172                     'GL_NV_vertex_array_range',
173                     'GL_NV_vertex_array_range2',
174                     'GL_NV_vertex_buffer_unified_memory',
175                     'GL_NV_vertex_program',
176                     'GL_NV_vertex_program1_1',
177                     'GL_NV_vertex_program2',
178                     'GL_NV_vertex_program2_option',
179                     'GL_NV_vertex_program3',
180                     'GL_NVX_conditional_render',
181                     'GL_NVX_gpu_memory_info',
182                     'GL_SGIS_generate_mipmap',
183                     'GL_SGIS_texture_lod',
184                     'GL_SGIX_depth_texture',
185                     'GL_SGIX_shadow',
186                     'GL_SUN_slice_accum'];
187 (function() {
188    var dataSets = [
189      {
190        name: 'full_data_linux',
191        gpuInfo: {
192          basic_info: [
193            {
194              description: 'Initialization time',
195              value: '111'
196            },
197            {
198              description: 'Vendor Id',
199              value: '0x10de'
200            },
201            {
202              description: 'Device Id',
203              value: '0x0658'
204            },
205            {
206              description: 'Driver vendor',
207              value: 'NVIDIA'
208            },
209            {
210              description: 'Driver version',
211              value: '195.36.24'
212            },
213            {
214              description: 'Driver date',
215              value: ''
216            },
217            {
218              description: 'Pixel shader version',
219              value: '1.50'
220            },
221            {
222              description: 'Vertex shader version',
223              value: '1.50'
224            },
225            {
226              description: 'GL version',
227              value: '3.2'
228            },
229            {
230              description: 'GL_VENDOR',
231              value: 'NVIDIA Corporation'
232            },
233            {
234              description: 'GL_RENDERER',
235              value: 'Quadro FX 380/PCI/SSE2'
236            },
237            {
238              description: 'GL_VERSION',
239              value: '3.2.0 NVIDIA 195.36.24'
240            },
241            {
242              description: 'GL_EXTENSIONS',
243              value: glValueArray.join(' '),
244            }
245          ],
246          featureStatus: {
247            featureStatus:
248              [
249                {'status': 'enabled', name: '2d_canvas'},
250                {'status': 'enabled', name: '3d_css'},
251                {'status': 'enabled', name: 'compositing'},
252                {'status': 'enabled', name: 'webgl'},
253                {'status': 'enabled', name: 'multisampling'}
254              ],
255            problems: []
256          }
257        },
258        clientInfo: {
259          blacklist_version: '1.10',
260          command_line: commandLineStr,
261          version: 'Chrome/12.0.729.0',
262        },
263        logMessages: []
264      },
265      {
266        name: 'no_data',
267        gpuInfo: undefined,
268        clientInfo: undefined,
269        logMessages: undefined
270      },
271      {
272        name: 'logs',
273        gpuInfo: undefined,
274        clientInfo: undefined,
275        logMessages: [
276          {header: 'foo', message: 'Bar'}
277        ]
278      },
280      // tests for 'status'
281      {
282        name: 'feature_states',
283        gpuInfo: {
284          basic_info: undefined,
285          featureStatus: {
286            featureStatus: [
287              {'status': 'disabled_off', name: '2d_canvas'},
288              {'status': 'unavailable_software', name: '3d_css'},
289              {'status': 'disabled_software', name: 'compositing'},
290              {'status': 'software', name: 'compositing'},
291              {'status': 'unavailable_off', name: 'webgl'},
292              {'status': 'enabled', name: 'multisampling'}
293            ],
294            problems: [
295              {
296                description: 'Something wrong',
297                crBugs: [],
298                webkitBugs: []
299              },
300              {
301                description: 'SomethingElse',
302                crBugs: [],
303                webkitBugs: []
304              },
305              {
306                description: 'WebKit and Chrome bug',
307                crBugs: [23456],
308                webkitBugs: [789, 2123]
309              }
310            ]
311          }
312        },
313        clientInfo: undefined,
314        logMessages: []
315      }
317    ];
319    var selectEl = document.createElement('select');
320    for (var i = 0; i < dataSets.length; ++i) {
321      var optionEl = document.createElement('option');
322      optionEl.textContent = dataSets[i].name;
323      optionEl.dataSet = dataSets[i];
324      selectEl.add(optionEl);
325    }
326    selectEl.addEventListener('change', function() {
327      browserBridge.applySimulatedData_(dataSets[selectEl.selectedIndex]);
328    });
329    selectEl.addEventListener('keydown', function() {
330      window.setTimeout(function() {
331        browserBridge.applySimulatedData_(dataSets[selectEl.selectedIndex]);
332      }, 0);
333    });
335    var controlEl = document.createElement('div');
336    var textEl = document.createElement('span');
337    textEl.textContent = 'GPU Info:';
338    controlEl.appendChild(textEl);
339    controlEl.appendChild(selectEl);
341    document.querySelector('#debug-div').appendChild(controlEl,
342                                                     document.body.firstChild);
344    browserBridge.applySimulatedData_(dataSets[0]);
346  })();