tor-browser

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

test_worker_interfaces.js (38460B)


      1 /* eslint-disable mozilla/no-comparison-or-assignment-inside-ok */
      2 
      3 importScripts("../../tests/mochitest/general/interface_exposure_checker.js");
      4 
      5 // This is a list of all interfaces that are exposed to workers.
      6 // Please only add things to this list with great care and proper review
      7 // from the associated module peers.
      8 
      9 // This file lists global interfaces we want exposed and verifies they
     10 // are what we intend. Each entry in the arrays below can either be a
     11 // simple string with the interface name, or an object with a 'name'
     12 // property giving the interface name as a string, and additional
     13 // properties which qualify the exposure of that interface. For example:
     14 //
     15 // [
     16 //   "AGlobalInterface", // secure context only
     17 //   { name: "DesktopOnlyThing", desktop: true },
     18 //   { name: "DisabledEverywhere", disabled: true },
     19 //   { name: "ExperimentalThing", release: false },
     20 //   { name: "ReallyExperimentalThing", nightly: true },
     21 // ];
     22 //
     23 // Note that the items are alphabetically sorted. This is a requirement.
     24 // See createInterfaceMap() in interface_exposure_checker.js for a complete
     25 // list of properties.
     26 //
     27 // The values of the properties need to be literal true/false
     28 // (e.g. indicating whether something is enabled on a particular
     29 // channel/OS).  If we ever end up in a situation where a property
     30 // value needs to depend on channel or OS, we will need to make sure
     31 // we have that information before setting up the property lists.
     32 
     33 // IMPORTANT: Do not change this list without review from
     34 //            a JavaScript Engine peer!
     35 let wasmGlobalEntry = {
     36  name: "WebAssembly",
     37  insecureContext: true,
     38  disabled: !getJSTestingFunctions().wasmIsSupportedByHardware(),
     39 };
     40 let wasmGlobalInterfaces = [
     41  { name: "CompileError", insecureContext: true },
     42  { name: "Exception", insecureContext: true },
     43  { name: "Function", insecureContext: true, nightly: true },
     44  { name: "Global", insecureContext: true },
     45  { name: "Instance", insecureContext: true },
     46  { name: "JSTag", insecureContext: true },
     47  { name: "LinkError", insecureContext: true },
     48  { name: "Memory", insecureContext: true },
     49  { name: "Module", insecureContext: true },
     50  { name: "RuntimeError", insecureContext: true },
     51  { name: "Table", insecureContext: true },
     52  { name: "Tag", insecureContext: true },
     53  { name: "compile", insecureContext: true },
     54  { name: "compileStreaming", insecureContext: true },
     55  { name: "instantiate", insecureContext: true },
     56  { name: "instantiateStreaming", insecureContext: true },
     57  { name: "validate", insecureContext: true },
     58 ];
     59 // IMPORTANT: Do not change this list without review from
     60 //            a JavaScript Engine peer!
     61 let ecmaGlobals = [
     62  { name: "AggregateError", insecureContext: true },
     63  { name: "Array", insecureContext: true },
     64  { name: "ArrayBuffer", insecureContext: true },
     65  { name: "AsyncDisposableStack", insecureContext: true },
     66  { name: "Atomics", insecureContext: true },
     67  { name: "BigInt", insecureContext: true },
     68  { name: "BigInt64Array", insecureContext: true },
     69  { name: "BigUint64Array", insecureContext: true },
     70  { name: "Boolean", insecureContext: true },
     71  { name: "DataView", insecureContext: true },
     72  { name: "Date", insecureContext: true },
     73  { name: "DisposableStack", insecureContext: true },
     74  { name: "Error", insecureContext: true },
     75  { name: "EvalError", insecureContext: true },
     76  { name: "FinalizationRegistry", insecureContext: true },
     77  { name: "Float16Array", insecureContext: true },
     78  { name: "Float32Array", insecureContext: true },
     79  { name: "Float64Array", insecureContext: true },
     80  { name: "Function", insecureContext: true },
     81  { name: "Infinity", insecureContext: true },
     82  { name: "Int16Array", insecureContext: true },
     83  { name: "Int32Array", insecureContext: true },
     84  { name: "Int8Array", insecureContext: true },
     85  { name: "InternalError", insecureContext: true },
     86  { name: "Intl", insecureContext: true },
     87  { name: "Iterator", insecureContext: true },
     88  { name: "JSON", insecureContext: true },
     89  { name: "Map", insecureContext: true },
     90  { name: "Math", insecureContext: true },
     91  { name: "NaN", insecureContext: true },
     92  { name: "Number", insecureContext: true },
     93  { name: "Object", insecureContext: true },
     94  { name: "Promise", insecureContext: true },
     95  { name: "Proxy", insecureContext: true },
     96  { name: "RangeError", insecureContext: true },
     97  { name: "ReferenceError", insecureContext: true },
     98  { name: "Reflect", insecureContext: true },
     99  { name: "RegExp", insecureContext: true },
    100  { name: "Set", insecureContext: true },
    101  {
    102    name: "SharedArrayBuffer",
    103    insecureContext: true,
    104    crossOriginIsolated: true,
    105  },
    106  { name: "String", insecureContext: true },
    107  { name: "SuppressedError", insecureContext: true },
    108  { name: "Symbol", insecureContext: true },
    109  { name: "SyntaxError", insecureContext: true },
    110  { name: "Temporal", insecureContext: true },
    111  { name: "TypeError", insecureContext: true },
    112  { name: "URIError", insecureContext: true },
    113  { name: "Uint16Array", insecureContext: true },
    114  { name: "Uint32Array", insecureContext: true },
    115  { name: "Uint8Array", insecureContext: true },
    116  { name: "Uint8ClampedArray", insecureContext: true },
    117  { name: "WeakMap", insecureContext: true },
    118  { name: "WeakRef", insecureContext: true },
    119  { name: "WeakSet", insecureContext: true },
    120  wasmGlobalEntry,
    121  { name: "decodeURI", insecureContext: true },
    122  { name: "decodeURIComponent", insecureContext: true },
    123  { name: "encodeURI", insecureContext: true },
    124  { name: "encodeURIComponent", insecureContext: true },
    125  { name: "escape", insecureContext: true },
    126  { name: "eval", insecureContext: true },
    127  { name: "globalThis", insecureContext: true },
    128  { name: "isFinite", insecureContext: true },
    129  { name: "isNaN", insecureContext: true },
    130  { name: "parseFloat", insecureContext: true },
    131  { name: "parseInt", insecureContext: true },
    132  { name: "undefined", insecureContext: true },
    133  { name: "unescape", insecureContext: true },
    134 ];
    135 // IMPORTANT: Do not change the list above without review from
    136 //            a JavaScript Engine peer!
    137 
    138 // IMPORTANT: Do not change the list below without review from a DOM peer!
    139 let interfaceNamesInGlobalScope = [
    140  // IMPORTANT: Do not change this list without review from a DOM peer!
    141  { name: "AbortController", insecureContext: true },
    142  // IMPORTANT: Do not change this list without review from a DOM peer!
    143  { name: "AbortSignal", insecureContext: true },
    144  // IMPORTANT: Do not change this list without review from a DOM peer!
    145  { name: "AudioData", insecureContext: true, nightlyAndroid: true },
    146  // IMPORTANT: Do not change this list without review from a DOM peer!
    147  { name: "AudioDecoder", nightlyAndroid: true },
    148  // IMPORTANT: Do not change this list without review from a DOM peer!
    149  { name: "AudioEncoder", nightlyAndroid: true },
    150  // IMPORTANT: Do not change this list without review from a DOM peer!
    151  { name: "Blob", insecureContext: true },
    152  // IMPORTANT: Do not change this list without review from a DOM peer!
    153  { name: "BroadcastChannel", insecureContext: true },
    154  // IMPORTANT: Do not change this list without review from a DOM peer!
    155  { name: "ByteLengthQueuingStrategy", insecureContext: true },
    156  // IMPORTANT: Do not change this list without review from a DOM peer!
    157  "Cache",
    158  // IMPORTANT: Do not change this list without review from a DOM peer!
    159  "CacheStorage",
    160  // IMPORTANT: Do not change this list without review from a DOM peer!
    161  { name: "CanvasGradient", insecureContext: true },
    162  // IMPORTANT: Do not change this list without review from a DOM peer!
    163  { name: "CanvasPattern", insecureContext: true },
    164  // IMPORTANT: Do not change this list without review from a DOM peer!
    165  { name: "CloseEvent", insecureContext: true },
    166  // IMPORTANT: Do not change this list without review from a DOM peer!
    167  { name: "CompressionStream", insecureContext: true },
    168  // IMPORTANT: Do not change this list without review from a DOM peer!
    169  { name: "CountQueuingStrategy", insecureContext: true },
    170  // IMPORTANT: Do not change this list without review from a DOM peer!
    171  { name: "Crypto", insecureContext: true },
    172  // IMPORTANT: Do not change this list without review from a DOM peer!
    173  { name: "CryptoKey" },
    174  // IMPORTANT: Do not change this list without review from a DOM peer!
    175  { name: "CustomEvent", insecureContext: true },
    176  // IMPORTANT: Do not change this list without review from a DOM peer!
    177  { name: "DOMException", insecureContext: true },
    178  // IMPORTANT: Do not change this list without review from a DOM peer!
    179  { name: "DOMMatrix", insecureContext: true },
    180  // IMPORTANT: Do not change this list without review from a DOM peer!
    181  { name: "DOMMatrixReadOnly", insecureContext: true },
    182  // IMPORTANT: Do not change this list without review from a DOM peer!
    183  { name: "DOMPoint", insecureContext: true },
    184  // IMPORTANT: Do not change this list without review from a DOM peer!
    185  { name: "DOMPointReadOnly", insecureContext: true },
    186  // IMPORTANT: Do not change this list without review from a DOM peer!
    187  { name: "DOMQuad", insecureContext: true },
    188  // IMPORTANT: Do not change this list without review from a DOM peer!
    189  { name: "DOMRect", insecureContext: true },
    190  // IMPORTANT: Do not change this list without review from a DOM peer!
    191  { name: "DOMRectReadOnly", insecureContext: true },
    192  // IMPORTANT: Do not change this list without review from a DOM peer!
    193  { name: "DOMStringList", insecureContext: true },
    194  // IMPORTANT: Do not change this list without review from a DOM peer!
    195  { name: "DecompressionStream", insecureContext: true },
    196  // IMPORTANT: Do not change this list without review from a DOM peer!
    197  { name: "DedicatedWorkerGlobalScope", insecureContext: true },
    198  // IMPORTANT: Do not change this list without review from a DOM peer!
    199  { name: "Directory", insecureContext: true },
    200  // IMPORTANT: Do not change this list without review from a DOM peer!
    201  { name: "EncodedAudioChunk", insecureContext: true, nightlyAndroid: true },
    202  // IMPORTANT: Do not change this list without review from a DOM peer!
    203  { name: "EncodedVideoChunk", insecureContext: true, nightlyAndroid: true },
    204  // IMPORTANT: Do not change this list without review from a DOM peer!
    205  { name: "ErrorEvent", insecureContext: true },
    206  // IMPORTANT: Do not change this list without review from a DOM peer!
    207  { name: "Event", insecureContext: true },
    208  // IMPORTANT: Do not change this list without review from a DOM peer!
    209  { name: "EventSource", insecureContext: true },
    210  // IMPORTANT: Do not change this list without review from a DOM peer!
    211  { name: "EventTarget", insecureContext: true },
    212  // IMPORTANT: Do not change this list without review from a DOM peer!
    213  { name: "File", insecureContext: true },
    214  // IMPORTANT: Do not change this list without review from a DOM peer!
    215  { name: "FileList", insecureContext: true },
    216  // IMPORTANT: Do not change this list without review from a DOM peer!
    217  { name: "FileReader", insecureContext: true },
    218  // IMPORTANT: Do not change this list without review from a DOM peer!
    219  { name: "FileReaderSync", insecureContext: true },
    220  // IMPORTANT: Do not change this list without review from a DOM peer!
    221  { name: "FileSystemDirectoryHandle" },
    222  // IMPORTANT: Do not change this list without review from a DOM peer!
    223  { name: "FileSystemFileHandle" },
    224  // IMPORTANT: Do not change this list without review from a DOM peer!
    225  { name: "FileSystemHandle" },
    226  // IMPORTANT: Do not change this list without review from a DOM peer!
    227  { name: "FileSystemSyncAccessHandle" },
    228  // IMPORTANT: Do not change this list without review from a DOM peer!
    229  { name: "FileSystemWritableFileStream" },
    230  // IMPORTANT: Do not change this list without review from a DOM peer!
    231  { name: "FontFace", insecureContext: true },
    232  // IMPORTANT: Do not change this list without review from a DOM peer!
    233  { name: "FontFaceSet", insecureContext: true },
    234  // IMPORTANT: Do not change this list without review from a DOM peer!
    235  { name: "FontFaceSetLoadEvent", insecureContext: true },
    236  // IMPORTANT: Do not change this list without review from a DOM peer!
    237  { name: "FormData", insecureContext: true },
    238  // IMPORTANT: Do not change this list without review from a DOM peer!
    239  { name: "GPU", earlyBetaOrEarlier: true },
    240  { name: "GPU", windows: true },
    241  { name: "GPU", mac: true, aarch64: true },
    242  // IMPORTANT: Do not change this list without review from a DOM peer!
    243  { name: "GPUAdapter", earlyBetaOrEarlier: true },
    244  { name: "GPUAdapter", windows: true },
    245  { name: "GPUAdapter", mac: true, aarch64: true },
    246  // IMPORTANT: Do not change this list without review from a DOM peer!
    247  { name: "GPUAdapterInfo", earlyBetaOrEarlier: true },
    248  { name: "GPUAdapterInfo", windows: true },
    249  { name: "GPUAdapterInfo", mac: true, aarch64: true },
    250  // IMPORTANT: Do not change this list without review from a DOM peer!
    251  { name: "GPUBindGroup", earlyBetaOrEarlier: true },
    252  { name: "GPUBindGroup", windows: true },
    253  { name: "GPUBindGroup", mac: true, aarch64: true },
    254  // IMPORTANT: Do not change this list without review from a DOM peer!
    255  { name: "GPUBindGroupLayout", earlyBetaOrEarlier: true },
    256  { name: "GPUBindGroupLayout", windows: true },
    257  { name: "GPUBindGroupLayout", mac: true, aarch64: true },
    258  // IMPORTANT: Do not change this list without review from a DOM peer!
    259  { name: "GPUBuffer", earlyBetaOrEarlier: true },
    260  { name: "GPUBuffer", windows: true },
    261  { name: "GPUBuffer", mac: true, aarch64: true },
    262  // IMPORTANT: Do not change this list without review from a DOM peer!
    263  { name: "GPUBufferUsage", earlyBetaOrEarlier: true },
    264  { name: "GPUBufferUsage", windows: true },
    265  { name: "GPUBufferUsage", mac: true, aarch64: true },
    266  // IMPORTANT: Do not change this list without review from a DOM peer!
    267  { name: "GPUCanvasContext", earlyBetaOrEarlier: true },
    268  { name: "GPUCanvasContext", windows: true },
    269  { name: "GPUCanvasContext", mac: true, aarch64: true },
    270  // IMPORTANT: Do not change this list without review from a DOM peer!
    271  { name: "GPUColorWrite", earlyBetaOrEarlier: true },
    272  { name: "GPUColorWrite", windows: true },
    273  { name: "GPUColorWrite", mac: true, aarch64: true },
    274  // IMPORTANT: Do not change this list without review from a DOM peer!
    275  { name: "GPUCommandBuffer", earlyBetaOrEarlier: true },
    276  { name: "GPUCommandBuffer", windows: true },
    277  { name: "GPUCommandBuffer", mac: true, aarch64: true },
    278  // IMPORTANT: Do not change this list without review from a DOM peer!
    279  { name: "GPUCommandEncoder", earlyBetaOrEarlier: true },
    280  { name: "GPUCommandEncoder", windows: true },
    281  { name: "GPUCommandEncoder", mac: true, aarch64: true },
    282  // IMPORTANT: Do not change this list without review from a DOM peer!
    283  { name: "GPUCompilationInfo", earlyBetaOrEarlier: true },
    284  { name: "GPUCompilationInfo", windows: true },
    285  { name: "GPUCompilationInfo", mac: true, aarch64: true },
    286  // IMPORTANT: Do not change this list without review from a DOM peer!
    287  { name: "GPUCompilationMessage", earlyBetaOrEarlier: true },
    288  { name: "GPUCompilationMessage", windows: true },
    289  { name: "GPUCompilationMessage", mac: true, aarch64: true },
    290  // IMPORTANT: Do not change this list without review from a DOM peer!
    291  { name: "GPUComputePassEncoder", earlyBetaOrEarlier: true },
    292  { name: "GPUComputePassEncoder", windows: true },
    293  { name: "GPUComputePassEncoder", mac: true, aarch64: true },
    294  // IMPORTANT: Do not change this list without review from a DOM peer!
    295  { name: "GPUComputePipeline", earlyBetaOrEarlier: true },
    296  { name: "GPUComputePipeline", windows: true },
    297  { name: "GPUComputePipeline", mac: true, aarch64: true },
    298  // IMPORTANT: Do not change this list without review from a DOM peer!
    299  { name: "GPUDevice", earlyBetaOrEarlier: true },
    300  { name: "GPUDevice", windows: true },
    301  { name: "GPUDevice", mac: true, aarch64: true },
    302  // IMPORTANT: Do not change this list without review from a DOM peer!
    303  { name: "GPUDeviceLostInfo", earlyBetaOrEarlier: true },
    304  { name: "GPUDeviceLostInfo", windows: true },
    305  { name: "GPUDeviceLostInfo", mac: true, aarch64: true },
    306  // IMPORTANT: Do not change this list without review from a DOM peer!
    307  { name: "GPUError", earlyBetaOrEarlier: true },
    308  { name: "GPUError", windows: true },
    309  { name: "GPUError", mac: true, aarch64: true },
    310  // IMPORTANT: Do not change this list without review from a DOM peer!
    311  { name: "GPUExternalTexture", earlyBetaOrEarlier: true },
    312  { name: "GPUExternalTexture", windows: true },
    313  { name: "GPUExternalTexture", mac: true, aarch64: true },
    314  // IMPORTANT: Do not change this list without review from a DOM peer!
    315  { name: "GPUInternalError", earlyBetaOrEarlier: true },
    316  { name: "GPUInternalError", windows: true },
    317  { name: "GPUInternalError", mac: true, aarch64: true },
    318  // IMPORTANT: Do not change this list without review from a DOM peer!
    319  { name: "GPUMapMode", earlyBetaOrEarlier: true },
    320  { name: "GPUMapMode", windows: true },
    321  { name: "GPUMapMode", mac: true, aarch64: true },
    322  // IMPORTANT: Do not change this list without review from a DOM peer!
    323  { name: "GPUOutOfMemoryError", earlyBetaOrEarlier: true },
    324  { name: "GPUOutOfMemoryError", windows: true },
    325  { name: "GPUOutOfMemoryError", mac: true, aarch64: true },
    326  // IMPORTANT: Do not change this list without review from a DOM peer!
    327  { name: "GPUPipelineError", earlyBetaOrEarlier: true },
    328  { name: "GPUPipelineError", windows: true },
    329  { name: "GPUPipelineError", mac: true, aarch64: true },
    330  // IMPORTANT: Do not change this list without review from a DOM peer!
    331  { name: "GPUPipelineLayout", earlyBetaOrEarlier: true },
    332  { name: "GPUPipelineLayout", windows: true },
    333  { name: "GPUPipelineLayout", mac: true, aarch64: true },
    334  // IMPORTANT: Do not change this list without review from a DOM peer!
    335  { name: "GPUQuerySet", earlyBetaOrEarlier: true },
    336  { name: "GPUQuerySet", windows: true },
    337  { name: "GPUQuerySet", mac: true, aarch64: true },
    338  // IMPORTANT: Do not change this list without review from a DOM peer!
    339  { name: "GPUQueue", earlyBetaOrEarlier: true },
    340  { name: "GPUQueue", windows: true },
    341  { name: "GPUQueue", mac: true, aarch64: true },
    342  // IMPORTANT: Do not change this list without review from a DOM peer!
    343  { name: "GPURenderBundle", earlyBetaOrEarlier: true },
    344  { name: "GPURenderBundle", windows: true },
    345  { name: "GPURenderBundle", mac: true, aarch64: true },
    346  // IMPORTANT: Do not change this list without review from a DOM peer!
    347  { name: "GPURenderBundleEncoder", earlyBetaOrEarlier: true },
    348  { name: "GPURenderBundleEncoder", windows: true },
    349  { name: "GPURenderBundleEncoder", mac: true, aarch64: true },
    350  // IMPORTANT: Do not change this list without review from a DOM peer!
    351  { name: "GPURenderPassEncoder", earlyBetaOrEarlier: true },
    352  { name: "GPURenderPassEncoder", windows: true },
    353  { name: "GPURenderPassEncoder", mac: true, aarch64: true },
    354  // IMPORTANT: Do not change this list without review from a DOM peer!
    355  { name: "GPURenderPipeline", earlyBetaOrEarlier: true },
    356  { name: "GPURenderPipeline", windows: true },
    357  { name: "GPURenderPipeline", mac: true, aarch64: true },
    358  // IMPORTANT: Do not change this list without review from a DOM peer!
    359  { name: "GPUSampler", earlyBetaOrEarlier: true },
    360  { name: "GPUSampler", windows: true },
    361  { name: "GPUSampler", mac: true, aarch64: true },
    362  // IMPORTANT: Do not change this list without review from a DOM peer!
    363  { name: "GPUShaderModule", earlyBetaOrEarlier: true },
    364  { name: "GPUShaderModule", windows: true },
    365  { name: "GPUShaderModule", mac: true, aarch64: true },
    366  // IMPORTANT: Do not change this list without review from a DOM peer!
    367  { name: "GPUShaderStage", earlyBetaOrEarlier: true },
    368  { name: "GPUShaderStage", windows: true },
    369  { name: "GPUShaderStage", mac: true, aarch64: true },
    370  // IMPORTANT: Do not change this list without review from a DOM peer!
    371  { name: "GPUSupportedFeatures", earlyBetaOrEarlier: true },
    372  { name: "GPUSupportedFeatures", windows: true },
    373  { name: "GPUSupportedFeatures", mac: true, aarch64: true },
    374  // IMPORTANT: Do not change this list without review from a DOM peer!
    375  { name: "GPUSupportedLimits", earlyBetaOrEarlier: true },
    376  { name: "GPUSupportedLimits", windows: true },
    377  { name: "GPUSupportedLimits", mac: true, aarch64: true },
    378  // IMPORTANT: Do not change this list without review from a DOM peer!
    379  { name: "GPUTexture", earlyBetaOrEarlier: true },
    380  { name: "GPUTexture", windows: true },
    381  { name: "GPUTexture", mac: true, aarch64: true },
    382  // IMPORTANT: Do not change this list without review from a DOM peer!
    383  { name: "GPUTextureUsage", earlyBetaOrEarlier: true },
    384  { name: "GPUTextureUsage", windows: true },
    385  { name: "GPUTextureUsage", mac: true, aarch64: true },
    386  // IMPORTANT: Do not change this list without review from a DOM peer!
    387  { name: "GPUTextureView", earlyBetaOrEarlier: true },
    388  { name: "GPUTextureView", windows: true },
    389  { name: "GPUTextureView", mac: true, aarch64: true },
    390  // IMPORTANT: Do not change this list without review from a DOM peer!
    391  { name: "GPUUncapturedErrorEvent", earlyBetaOrEarlier: true },
    392  { name: "GPUUncapturedErrorEvent", windows: true },
    393  { name: "GPUUncapturedErrorEvent", mac: true, aarch64: true },
    394  // IMPORTANT: Do not change this list without review from a DOM peer!
    395  { name: "GPUValidationError", earlyBetaOrEarlier: true },
    396  { name: "GPUValidationError", windows: true },
    397  { name: "GPUValidationError", mac: true, aarch64: true },
    398  // IMPORTANT: Do not change this list without review from a DOM peer!
    399  { name: "Headers", insecureContext: true },
    400  // IMPORTANT: Do not change this list without review from a DOM peer!
    401  { name: "IDBCursor", insecureContext: true },
    402  // IMPORTANT: Do not change this list without review from a DOM peer!
    403  { name: "IDBCursorWithValue", insecureContext: true },
    404  // IMPORTANT: Do not change this list without review from a DOM peer!
    405  { name: "IDBDatabase", insecureContext: true },
    406  // IMPORTANT: Do not change this list without review from a DOM peer!
    407  { name: "IDBFactory", insecureContext: true },
    408  // IMPORTANT: Do not change this list without review from a DOM peer!
    409  { name: "IDBIndex", insecureContext: true },
    410  // IMPORTANT: Do not change this list without review from a DOM peer!
    411  { name: "IDBKeyRange", insecureContext: true },
    412  // IMPORTANT: Do not change this list without review from a DOM peer!
    413  { name: "IDBObjectStore", insecureContext: true },
    414  // IMPORTANT: Do not change this list without review from a DOM peer!
    415  { name: "IDBOpenDBRequest", insecureContext: true },
    416  // IMPORTANT: Do not change this list without review from a DOM peer!
    417  { name: "IDBRequest", insecureContext: true },
    418  // IMPORTANT: Do not change this list without review from a DOM peer!
    419  { name: "IDBTransaction", insecureContext: true },
    420  // IMPORTANT: Do not change this list without review from a DOM peer!
    421  { name: "IDBVersionChangeEvent", insecureContext: true },
    422  // IMPORTANT: Do not change this list without review from a DOM peer!
    423  { name: "ImageBitmap", insecureContext: true },
    424  // IMPORTANT: Do not change this list without review from a DOM peer!
    425  { name: "ImageBitmapRenderingContext", insecureContext: true },
    426  // IMPORTANT: Do not change this list without review from a DOM peer!
    427  { name: "ImageData", insecureContext: true },
    428  // IMPORTANT: Do not change this list without review from a DOM peer!
    429  { name: "ImageDecoder" },
    430  // IMPORTANT: Do not change this list without review from a DOM peer!
    431  { name: "ImageTrack" },
    432  // IMPORTANT: Do not change this list without review from a DOM peer!
    433  { name: "ImageTrackList" },
    434  // IMPORTANT: Do not change this list without review from a DOM peer!
    435  "Lock",
    436  // IMPORTANT: Do not change this list without review from a DOM peer!
    437  "LockManager",
    438  // IMPORTANT: Do not change this list without review from a DOM peer!
    439  { name: "MediaCapabilities", insecureContext: true },
    440  // IMPORTANT: Do not change this list without review from a DOM peer!
    441  { name: "MessageChannel", insecureContext: true },
    442  // IMPORTANT: Do not change this list without review from a DOM peer!
    443  { name: "MessageEvent", insecureContext: true },
    444  // IMPORTANT: Do not change this list without review from a DOM peer!
    445  { name: "MessagePort", insecureContext: true },
    446  // IMPORTANT: Do not change this list without review from a DOM peer!
    447  "NavigationPreloadManager",
    448  // IMPORTANT: Do not change this list without review from a DOM peer!
    449  { name: "NetworkInformation", insecureContext: true, disabled: true },
    450  // IMPORTANT: Do not change this list without review from a DOM peer!
    451  { name: "Notification", insecureContext: true },
    452  // IMPORTANT: Do not change this list without review from a DOM peer!
    453  { name: "OffscreenCanvas", insecureContext: true },
    454  // IMPORTANT: Do not change this list without review from a DOM peer!
    455  { name: "OffscreenCanvasRenderingContext2D", insecureContext: true },
    456  // IMPORTANT: Do not change this list without review from a DOM peer!
    457  { name: "Path2D", insecureContext: true },
    458  // IMPORTANT: Do not change this list without review from a DOM peer!
    459  { name: "Performance", insecureContext: true },
    460  // IMPORTANT: Do not change this list without review from a DOM peer!
    461  { name: "PerformanceEntry", insecureContext: true },
    462  // IMPORTANT: Do not change this list without review from a DOM peer!
    463  { name: "PerformanceMark", insecureContext: true },
    464  // IMPORTANT: Do not change this list without review from a DOM peer!
    465  { name: "PerformanceMeasure", insecureContext: true },
    466  // IMPORTANT: Do not change this list without review from a DOM peer!
    467  { name: "PerformanceObserver", insecureContext: true },
    468  // IMPORTANT: Do not change this list without review from a DOM peer!
    469  { name: "PerformanceObserverEntryList", insecureContext: true },
    470  // IMPORTANT: Do not change this list without review from a DOM peer!
    471  { name: "PerformanceResourceTiming", insecureContext: true },
    472  // IMPORTANT: Do not change this list without review from a DOM peer!
    473  { name: "PerformanceServerTiming", insecureContext: false },
    474  // IMPORTANT: Do not change this list without review from a DOM peer!
    475  { name: "PermissionStatus", insecureContext: true },
    476  // IMPORTANT: Do not change this list without review from a DOM peer!
    477  { name: "Permissions", insecureContext: true },
    478  // IMPORTANT: Do not change this list without review from a DOM peer!
    479  { name: "ProgressEvent", insecureContext: true },
    480  // IMPORTANT: Do not change this list without review from a DOM peer!
    481  { name: "PromiseRejectionEvent", insecureContext: true },
    482  // IMPORTANT: Do not change this list without review from a DOM peer!
    483  "PushManager",
    484  // IMPORTANT: Do not change this list without review from a DOM peer!
    485  "PushSubscription",
    486  // IMPORTANT: Do not change this list without review from a DOM peer!
    487  "PushSubscriptionOptions",
    488  // IMPORTANT: Do not change this list without review from a DOM peer!
    489  { name: "RTCDataChannel", insecureContext: true },
    490  // IMPORTANT: Do not change this list without review from a DOM peer!
    491  { name: "RTCEncodedAudioFrame", insecureContext: true },
    492  // IMPORTANT: Do not change this list without review from a DOM peer!
    493  { name: "RTCEncodedVideoFrame", insecureContext: true },
    494  // IMPORTANT: Do not change this list without review from a DOM peer!
    495  { name: "RTCRtpScriptTransformer", insecureContext: true },
    496  // IMPORTANT: Do not change this list without review from a DOM peer!
    497  { name: "RTCTransformEvent", insecureContext: true },
    498  // IMPORTANT: Do not change this list without review from a DOM peer!
    499  { name: "ReadableByteStreamController", insecureContext: true },
    500  // IMPORTANT: Do not change this list without review from a DOM peer!
    501  { name: "ReadableStream", insecureContext: true },
    502  // IMPORTANT: Do not change this list without review from a DOM peer!
    503  { name: "ReadableStreamBYOBReader", insecureContext: true },
    504  // IMPORTANT: Do not change this list without review from a DOM peer!
    505  { name: "ReadableStreamBYOBRequest", insecureContext: true },
    506  // IMPORTANT: Do not change this list without review from a DOM peer!
    507  { name: "ReadableStreamDefaultController", insecureContext: true },
    508  // IMPORTANT: Do not change this list without review from a DOM peer!
    509  { name: "ReadableStreamDefaultReader", insecureContext: true },
    510  // IMPORTANT: Do not change this list without review from a DOM peer!
    511  { name: "Request", insecureContext: true },
    512  // IMPORTANT: Do not change this list without review from a DOM peer!
    513  { name: "Response", insecureContext: true },
    514  // IMPORTANT: Do not change this list without review from a DOM peer!
    515  { name: "Scheduler", insecureContext: true },
    516  // IMPORTANT: Do not change this list without review from a DOM peer!
    517  "ServiceWorker",
    518  // IMPORTANT: Do not change this list without review from a DOM peer!
    519  "ServiceWorkerContainer",
    520  // IMPORTANT: Do not change this list without review from a DOM peer!
    521  "ServiceWorkerRegistration",
    522  // IMPORTANT: Do not change this list without review from a DOM peer!
    523  { name: "StorageManager", fennec: false },
    524  // IMPORTANT: Do not change this list without review from a DOM peer!
    525  { name: "SubtleCrypto" },
    526  // IMPORTANT: Do not change this list without review from a DOM peer!
    527  { name: "TaskController", insecureContext: true },
    528  // IMPORTANT: Do not change this list without review from a DOM peer!
    529  { name: "TaskPriorityChangeEvent", insecureContext: true },
    530  // IMPORTANT: Do not change this list without review from a DOM peer!
    531  { name: "TaskSignal", insecureContext: true },
    532  // IMPORTANT: Do not change this list without review from a DOM peer!
    533  { name: "TextDecoder", insecureContext: true },
    534  // IMPORTANT: Do not change this list without review from a DOM peer!
    535  { name: "TextDecoderStream", insecureContext: true },
    536  // IMPORTANT: Do not change this list without review from a DOM peer!
    537  { name: "TextEncoder", insecureContext: true },
    538  // IMPORTANT: Do not change this list without review from a DOM peer!
    539  { name: "TextEncoderStream", insecureContext: true },
    540  // IMPORTANT: Do not change this list without review from a DOM peer!
    541  { name: "TextMetrics", insecureContext: true },
    542  // IMPORTANT: Do not change this list without review from a DOM peer!
    543  { name: "TransformStream", insecureContext: true },
    544  // IMPORTANT: Do not change this list without review from a DOM peer!
    545  { name: "TransformStreamDefaultController", insecureContext: true },
    546  // IMPORTANT: Do not change this list without review from a DOM peer!
    547  { name: "TrustedHTML", insecureContext: true },
    548  // IMPORTANT: Do not change this list without review from a DOM peer!
    549  { name: "TrustedScript", insecureContext: true },
    550  // IMPORTANT: Do not change this list without review from a DOM peer!
    551  { name: "TrustedScriptURL", insecureContext: true },
    552  // IMPORTANT: Do not change this list without review from a DOM peer!
    553  { name: "TrustedTypePolicy", insecureContext: true },
    554  // IMPORTANT: Do not change this list without review from a DOM peer!
    555  { name: "TrustedTypePolicyFactory", insecureContext: true },
    556  // IMPORTANT: Do not change this list without review from a DOM peer!
    557  { name: "URL", insecureContext: true },
    558  // IMPORTANT: Do not change this list without review from a DOM peer!
    559  { name: "URLPattern", insecureContext: true },
    560  // IMPORTANT: Do not change this list without review from a DOM peer!
    561  { name: "URLSearchParams", insecureContext: true },
    562  // IMPORTANT: Do not change this list without review from a DOM peer!
    563  { name: "VideoColorSpace", insecureContext: true },
    564  // IMPORTANT: Do not change this list without review from a DOM peer!
    565  { name: "VideoDecoder", nightlyAndroid: true },
    566  // IMPORTANT: Do not change this list without review from a DOM peer!
    567  { name: "VideoEncoder", nightlyAndroid: true },
    568  // IMPORTANT: Do not change this list without review from a DOM peer!
    569  { name: "VideoFrame", insecureContext: true },
    570  // IMPORTANT: Do not change this list without review from a DOM peer!
    571  { name: "WGSLLanguageFeatures", earlyBetaOrEarlier: true },
    572  { name: "WGSLLanguageFeatures", windows: true },
    573  { name: "WGSLLanguageFeatures", mac: true, aarch64: true },
    574  // IMPORTANT: Do not change this list without review from a DOM peer!
    575  { name: "WebGL2RenderingContext", insecureContext: true },
    576  // IMPORTANT: Do not change this list without review from a DOM peer!
    577  { name: "WebGLActiveInfo", insecureContext: true },
    578  // IMPORTANT: Do not change this list without review from a DOM peer!
    579  { name: "WebGLBuffer", insecureContext: true },
    580  // IMPORTANT: Do not change this list without review from a DOM peer!
    581  { name: "WebGLContextEvent", insecureContext: true },
    582  // IMPORTANT: Do not change this list without review from a DOM peer!
    583  { name: "WebGLFramebuffer", insecureContext: true },
    584  // IMPORTANT: Do not change this list without review from a DOM peer!
    585  { name: "WebGLProgram", insecureContext: true },
    586  // IMPORTANT: Do not change this list without review from a DOM peer!
    587  { name: "WebGLQuery", insecureContext: true },
    588  // IMPORTANT: Do not change this list without review from a DOM peer!
    589  { name: "WebGLRenderbuffer", insecureContext: true },
    590  // IMPORTANT: Do not change this list without review from a DOM peer!
    591  { name: "WebGLRenderingContext", insecureContext: true },
    592  // IMPORTANT: Do not change this list without review from a DOM peer!
    593  { name: "WebGLSampler", insecureContext: true },
    594  // IMPORTANT: Do not change this list without review from a DOM peer!
    595  { name: "WebGLShader", insecureContext: true },
    596  // IMPORTANT: Do not change this list without review from a DOM peer!
    597  { name: "WebGLShaderPrecisionFormat", insecureContext: true },
    598  // IMPORTANT: Do not change this list without review from a DOM peer!
    599  { name: "WebGLSync", insecureContext: true },
    600  // IMPORTANT: Do not change this list without review from a DOM peer!
    601  { name: "WebGLTexture", insecureContext: true },
    602  // IMPORTANT: Do not change this list without review from a DOM peer!
    603  { name: "WebGLTransformFeedback", insecureContext: true },
    604  // IMPORTANT: Do not change this list without review from a DOM peer!
    605  { name: "WebGLUniformLocation", insecureContext: true },
    606  // IMPORTANT: Do not change this list without review from a DOM peer!
    607  { name: "WebGLVertexArrayObject", insecureContext: true },
    608  // IMPORTANT: Do not change this list without review from a DOM peer!
    609  { name: "WebSocket", insecureContext: true },
    610  // IMPORTANT: Do not change this list without review from a DOM peer!
    611  { name: "WebTransport", insecureContext: false },
    612  // IMPORTANT: Do not change this list without review from a DOM peer!
    613  { name: "WebTransportBidirectionalStream", insecureContext: false },
    614  // IMPORTANT: Do not change this list without review from a DOM peer!
    615  { name: "WebTransportDatagramDuplexStream", insecureContext: false },
    616  // IMPORTANT: Do not change this list without review from a DOM peer!
    617  { name: "WebTransportError", insecureContext: false },
    618  // IMPORTANT: Do not change this list without review from a DOM peer!
    619  { name: "WebTransportReceiveStream", insecureContext: false },
    620  // IMPORTANT: Do not change this list without review from a DOM peer!
    621  { name: "WebTransportSendStream", insecureContext: false },
    622  // IMPORTANT: Do not change this list without review from a DOM peer!
    623  { name: "Worker", insecureContext: true },
    624  // IMPORTANT: Do not change this list without review from a DOM peer!
    625  { name: "WorkerGlobalScope", insecureContext: true },
    626  // IMPORTANT: Do not change this list without review from a DOM peer!
    627  { name: "WorkerLocation", insecureContext: true },
    628  // IMPORTANT: Do not change this list without review from a DOM peer!
    629  { name: "WorkerNavigator", insecureContext: true },
    630  // IMPORTANT: Do not change this list without review from a DOM peer!
    631  { name: "WritableStream", insecureContext: true },
    632  // IMPORTANT: Do not change this list without review from a DOM peer!
    633  { name: "WritableStreamDefaultController", insecureContext: true },
    634  // IMPORTANT: Do not change this list without review from a DOM peer!
    635  { name: "WritableStreamDefaultWriter", insecureContext: true },
    636  // IMPORTANT: Do not change this list without review from a DOM peer!
    637  { name: "XMLHttpRequest", insecureContext: true },
    638  // IMPORTANT: Do not change this list without review from a DOM peer!
    639  { name: "XMLHttpRequestEventTarget", insecureContext: true },
    640  // IMPORTANT: Do not change this list without review from a DOM peer!
    641  { name: "XMLHttpRequestUpload", insecureContext: true },
    642  // IMPORTANT: Do not change this list without review from a DOM peer!
    643  { name: "cancelAnimationFrame", insecureContext: true },
    644  // IMPORTANT: Do not change this list without review from a DOM peer!
    645  { name: "close", insecureContext: true },
    646  // IMPORTANT: Do not change this list without review from a DOM peer!
    647  { name: "console", insecureContext: true },
    648  // IMPORTANT: Do not change this list without review from a DOM peer!
    649  { name: "name", insecureContext: true },
    650  // IMPORTANT: Do not change this list without review from a DOM peer!
    651  { name: "onmessage", insecureContext: true },
    652  // IMPORTANT: Do not change this list without review from a DOM peer!
    653  { name: "onmessageerror", insecureContext: true },
    654  // IMPORTANT: Do not change this list without review from a DOM peer!
    655  { name: "onrtctransform", insecureContext: true },
    656  // IMPORTANT: Do not change this list without review from a DOM peer!
    657  { name: "postMessage", insecureContext: true },
    658  // IMPORTANT: Do not change this list without review from a DOM peer!
    659  { name: "requestAnimationFrame", insecureContext: true },
    660  // IMPORTANT: Do not change this list without review from a DOM peer!
    661 ];
    662 // IMPORTANT: Do not change the list above without review from a DOM peer!
    663 
    664 // List of functions defined on the global by the test harness or this test
    665 // file.
    666 let testFunctions = [
    667  "ok",
    668  "is",
    669  "workerTestArrayEquals",
    670  "workerTestDone",
    671  "workerTestGetPermissions",
    672  "workerTestGetHelperData",
    673  "entryDisabled",
    674  "createInterfaceMap",
    675  "runTest",
    676 ];
    677 
    678 workerTestGetHelperData(function (data) {
    679  runTest("self", self, {
    680    data,
    681    testFunctions,
    682    interfaceGroups: [ecmaGlobals, interfaceNamesInGlobalScope],
    683  });
    684  if (WebAssembly && !entryDisabled(wasmGlobalEntry, data)) {
    685    runTest("WebAssembly", WebAssembly, {
    686      data,
    687      interfaceGroups: [wasmGlobalInterfaces],
    688    });
    689  }
    690  workerTestDone();
    691 });