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 });