tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_common.html (5088B)


      1 <!DOCTYPE HTML>
      2 <html>
      3  <head>
      4    <meta charset='utf-8'/>
      5    <script src='/tests/SimpleTest/SimpleTest.js'></script>
      6    <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
      7    <script src='ensure-ext.js'></script>
      8  </head>
      9  <body>
     10    <script>
     11 
     12 'use strict';
     13 
     14 var ENSURE = 'ENSURE'; // Works on all test machines.
     15 var FORBID = 'FORBID'; // Should not work on any test machine.
     16 var MACHINE_SPECIFIC = 'MACHINE_SPECIFIC';
     17 
     18 var defaultExts = [
     19    // Ratified
     20    ['ANGLE_instanced_arrays'        , [MACHINE_SPECIFIC, FORBID          ]],
     21    ['EXT_blend_minmax'              , [MACHINE_SPECIFIC, FORBID          ]],
     22    ['EXT_frag_depth'                , [MACHINE_SPECIFIC, FORBID          ]],
     23    ['EXT_shader_texture_lod'        , [MACHINE_SPECIFIC, FORBID          ]],
     24    ['EXT_texture_filter_anisotropic', [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     25    ['OES_element_index_uint'        , [ENSURE          , FORBID          ]],
     26    ['OES_fbo_render_mipmap'         , [MACHINE_SPECIFIC, FORBID          ]],
     27    ['OES_standard_derivatives'      , [MACHINE_SPECIFIC, FORBID          ]],
     28    ['OES_texture_float'             , [ENSURE          , FORBID          ]],
     29    ['OES_texture_float_linear'      , [ENSURE          , ENSURE          ]],
     30    ['OES_texture_half_float'        , [ENSURE          , FORBID          ]],
     31    ['OES_texture_half_float_linear' , [ENSURE          , FORBID          ]],
     32    ['OES_vertex_array_object'       , [ENSURE          , FORBID          ]],
     33    ['WEBGL_compressed_texture_s3tc' , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     34    ['WEBGL_debug_renderer_info'     , [ENSURE          , ENSURE          ]],
     35    ['WEBGL_debug_shaders'           , [ENSURE          , ENSURE          ]],
     36    ['WEBGL_depth_texture'           , [MACHINE_SPECIFIC, FORBID          ]],
     37    ['WEBGL_draw_buffers'            , [MACHINE_SPECIFIC, FORBID          ]],
     38    ['WEBGL_lose_context'            , [ENSURE          , ENSURE          ]],
     39 
     40    // Community Approved
     41    ['EXT_color_buffer_float'            , [FORBID          , ENSURE          ]],
     42    ['EXT_color_buffer_half_float'       , [MACHINE_SPECIFIC, FORBID          ]],
     43    ['EXT_depth_clamp'                   , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     44    ['EXT_disjoint_timer_query'          , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     45    ['EXT_float_blend'                   , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     46    ['EXT_sRGB'                          , [MACHINE_SPECIFIC, FORBID          ]],
     47    ['EXT_texture_compression_bptc'      , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     48    ['EXT_texture_compression_rgtc'      , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     49    ['OES_draw_buffers_indexed'          , [FORBID          , MACHINE_SPECIFIC]],
     50    ['OVR_multiview2'                    , [FORBID          , MACHINE_SPECIFIC]],
     51    ['WEBGL_color_buffer_float'          , [MACHINE_SPECIFIC, FORBID          ]],
     52    ['WEBGL_compressed_texture_astc'     , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     53    ['WEBGL_compressed_texture_atc'      , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     54    ['WEBGL_compressed_texture_etc'      , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     55    ['WEBGL_compressed_texture_etc1'     , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     56    ['WEBGL_compressed_texture_pvrtc'    , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     57    ['WEBGL_compressed_texture_s3tc_srgb', [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     58    ['WEBGL_provoking_vertex'            , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
     59 ];
     60 
     61 var draftExts = [
     62    ['EXT_texture_norm16'      , [FORBID          , MACHINE_SPECIFIC]],
     63    ['WEBGL_explicit_present'  , [ENSURE          , ENSURE          ]],
     64 ];
     65 
     66 ////////////////////
     67 // Ensure that we never see any extensions that we haven't listed above!
     68 
     69 (function() {
     70    const expectedExts = (defaultExts.concat(draftExts)).map(x => x[0]);
     71 
     72    ['webgl', 'webgl2'].forEach( contextType => {
     73        const c = document.createElement('canvas');
     74        const gl = c.getContext(contextType);
     75        if (!gl) return;
     76 
     77        const actualExts = gl.getSupportedExtensions();
     78        actualExts.forEach(actualExt => {
     79            ok(expectedExts.includes(actualExt), 'Unexpected ext: ' + actualExt);
     80        });
     81    });
     82 })();
     83 
     84 ////////////////////
     85 
     86 function TestExtFor(contextType, extName, status) {
     87    switch (status) {
     88    case ENSURE:
     89        EnsureExtFor(contextType, extName);
     90        break;
     91 
     92    case FORBID:
     93        EnsureExtFor(contextType, extName, false);
     94        break;
     95 
     96    case MACHINE_SPECIFIC:
     97        break;
     98    }
     99 }
    100 
    101 function TestExt(extName, statusArr) {
    102    TestExtFor('webgl', extName, statusArr[0]);
    103    TestExtFor('webgl2', extName, statusArr[1]);
    104 }
    105 
    106 ////////////////////
    107 
    108 defaultExts.forEach(function(x) {
    109    var extName = x[0];
    110    var statusArr = x[1];
    111    TestExt(extName, statusArr);
    112 });
    113 
    114 draftExts.forEach(function(x) {
    115    var extName = x[0];
    116    EnsureExt(extName, false);
    117 });
    118 
    119 Lastly_WithDraftExtsEnabled(function() {
    120    draftExts.forEach(function(x) {
    121        var extName = x[0];
    122        var statusArr = x[1];
    123        TestExt(extName, statusArr);
    124    });
    125 });
    126 
    127    </script>
    128  </body>
    129 </html>