tor-browser

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

commit e3f2a6498f944fb4442b237c6cb6d8c794da0174
parent ec62de7f10822149665b3741b77263acbcf51686
Author: Erich Gubler <erichdongubler@gmail.com>
Date:   Sat, 27 Dec 2025 01:37:47 +0000

Bug 1942431 - chore(webgpu): enable in service workers on Nightly and other released platforms r=webgpu-reviewers,dom-worker-reviewers,aleiserson,edenchuang

Differential Revision: https://phabricator.services.mozilla.com/D234781

Diffstat:
Mdom/serviceworkers/test/test_serviceworker_interfaces.js | 82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdom/webgpu/Instance.cpp | 8--------
Mmodules/libpref/init/StaticPrefList.yaml | 4++++
3 files changed, 86 insertions(+), 8 deletions(-)

diff --git a/dom/serviceworkers/test/test_serviceworker_interfaces.js b/dom/serviceworkers/test/test_serviceworker_interfaces.js @@ -227,84 +227,164 @@ let interfaceNamesInGlobalScope = [ "FormData", // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPU", earlyBetaOrEarlier: true }, + { name: "GPU", windows: true }, + { name: "GPU", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUAdapter", earlyBetaOrEarlier: true }, + { name: "GPUAdapter", windows: true }, + { name: "GPUAdapter", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUAdapterInfo", earlyBetaOrEarlier: true }, + { name: "GPUAdapterInfo", windows: true }, + { name: "GPUAdapterInfo", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUBindGroup", earlyBetaOrEarlier: true }, + { name: "GPUBindGroup", windows: true }, + { name: "GPUBindGroup", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUBindGroupLayout", earlyBetaOrEarlier: true }, + { name: "GPUBindGroupLayout", windows: true }, + { name: "GPUBindGroupLayout", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUBuffer", earlyBetaOrEarlier: true }, + { name: "GPUBuffer", windows: true }, + { name: "GPUBuffer", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUBufferUsage", earlyBetaOrEarlier: true }, + { name: "GPUBufferUsage", windows: true }, + { name: "GPUBufferUsage", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUCanvasContext", earlyBetaOrEarlier: true }, + { name: "GPUCanvasContext", windows: true }, + { name: "GPUCanvasContext", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUColorWrite", earlyBetaOrEarlier: true }, + { name: "GPUColorWrite", windows: true }, + { name: "GPUColorWrite", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUCommandBuffer", earlyBetaOrEarlier: true }, + { name: "GPUCommandBuffer", windows: true }, + { name: "GPUCommandBuffer", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUCommandEncoder", earlyBetaOrEarlier: true }, + { name: "GPUCommandEncoder", windows: true }, + { name: "GPUCommandEncoder", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUCompilationInfo", earlyBetaOrEarlier: true }, + { name: "GPUCompilationInfo", windows: true }, + { name: "GPUCompilationInfo", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUCompilationMessage", earlyBetaOrEarlier: true }, + { name: "GPUCompilationMessage", windows: true }, + { name: "GPUCompilationMessage", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUComputePassEncoder", earlyBetaOrEarlier: true }, + { name: "GPUComputePassEncoder", windows: true }, + { name: "GPUComputePassEncoder", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUComputePipeline", earlyBetaOrEarlier: true }, + { name: "GPUComputePipeline", windows: true }, + { name: "GPUComputePipeline", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUDevice", earlyBetaOrEarlier: true }, + { name: "GPUDevice", windows: true }, + { name: "GPUDevice", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUDeviceLostInfo", earlyBetaOrEarlier: true }, + { name: "GPUDeviceLostInfo", windows: true }, + { name: "GPUDeviceLostInfo", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUError", earlyBetaOrEarlier: true }, + { name: "GPUError", windows: true }, + { name: "GPUError", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUExternalTexture", earlyBetaOrEarlier: true }, + { name: "GPUExternalTexture", windows: true }, + { name: "GPUExternalTexture", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUInternalError", earlyBetaOrEarlier: true }, + { name: "GPUInternalError", windows: true }, + { name: "GPUInternalError", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUMapMode", earlyBetaOrEarlier: true }, + { name: "GPUMapMode", windows: true }, + { name: "GPUMapMode", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUOutOfMemoryError", earlyBetaOrEarlier: true }, + { name: "GPUOutOfMemoryError", windows: true }, + { name: "GPUOutOfMemoryError", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUPipelineError", earlyBetaOrEarlier: true }, + { name: "GPUPipelineError", windows: true }, + { name: "GPUPipelineError", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUPipelineLayout", earlyBetaOrEarlier: true }, + { name: "GPUPipelineLayout", windows: true }, + { name: "GPUPipelineLayout", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUQuerySet", earlyBetaOrEarlier: true }, + { name: "GPUQuerySet", windows: true }, + { name: "GPUQuerySet", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUQueue", earlyBetaOrEarlier: true }, + { name: "GPUQueue", windows: true }, + { name: "GPUQueue", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPURenderBundle", earlyBetaOrEarlier: true }, + { name: "GPURenderBundle", windows: true }, + { name: "GPURenderBundle", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPURenderBundleEncoder", earlyBetaOrEarlier: true }, + { name: "GPURenderBundleEncoder", windows: true }, + { name: "GPURenderBundleEncoder", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPURenderPassEncoder", earlyBetaOrEarlier: true }, + { name: "GPURenderPassEncoder", windows: true }, + { name: "GPURenderPassEncoder", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPURenderPipeline", earlyBetaOrEarlier: true }, + { name: "GPURenderPipeline", windows: true }, + { name: "GPURenderPipeline", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUSampler", earlyBetaOrEarlier: true }, + { name: "GPUSampler", windows: true }, + { name: "GPUSampler", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUShaderModule", earlyBetaOrEarlier: true }, + { name: "GPUShaderModule", windows: true }, + { name: "GPUShaderModule", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUShaderStage", earlyBetaOrEarlier: true }, + { name: "GPUShaderStage", windows: true }, + { name: "GPUShaderStage", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUSupportedFeatures", earlyBetaOrEarlier: true }, + { name: "GPUSupportedFeatures", windows: true }, + { name: "GPUSupportedFeatures", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUSupportedLimits", earlyBetaOrEarlier: true }, + { name: "GPUSupportedLimits", windows: true }, + { name: "GPUSupportedLimits", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUTexture", earlyBetaOrEarlier: true }, + { name: "GPUTexture", windows: true }, + { name: "GPUTexture", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUTextureUsage", earlyBetaOrEarlier: true }, + { name: "GPUTextureUsage", windows: true }, + { name: "GPUTextureUsage", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUTextureView", earlyBetaOrEarlier: true }, + { name: "GPUTextureView", windows: true }, + { name: "GPUTextureView", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUUncapturedErrorEvent", earlyBetaOrEarlier: true }, + { name: "GPUUncapturedErrorEvent", windows: true }, + { name: "GPUUncapturedErrorEvent", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "GPUValidationError", earlyBetaOrEarlier: true }, + { name: "GPUValidationError", windows: true }, + { name: "GPUValidationError", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! "Headers", // IMPORTANT: Do not change this list without review from a DOM peer! @@ -465,6 +545,8 @@ let interfaceNamesInGlobalScope = [ "URLSearchParams", // IMPORTANT: Do not change this list without review from a DOM peer! { name: "WGSLLanguageFeatures", earlyBetaOrEarlier: true }, + { name: "WGSLLanguageFeatures", windows: true }, + { name: "WGSLLanguageFeatures", mac: true, aarch64: true }, // IMPORTANT: Do not change this list without review from a DOM peer! "WebGL2RenderingContext", // IMPORTANT: Do not change this list without review from a DOM peer! diff --git a/dom/webgpu/Instance.cpp b/dom/webgpu/Instance.cpp @@ -125,14 +125,6 @@ already_AddRefed<dom::Promise> Instance::RequestAdapter( } }; -#ifndef EARLY_BETA_OR_EARLIER - if (dom::WorkerPrivate* wp = dom::GetCurrentThreadWorkerPrivate()) { - rejectIf(wp->IsServiceWorker(), - "WebGPU in service workers is not yet available in Release or " - "late Beta builds; see " - "<https://bugzilla.mozilla.org/show_bug.cgi?id=1942431>."); - } -#endif rejectIf(!gfx::gfxVars::AllowWebGPU(), "WebGPU is disabled by blocklist."); rejectIf(!StaticPrefs::dom_webgpu_enabled(), "WebGPU is disabled because the `dom.webgpu.enabled` pref. is set " diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml @@ -5650,7 +5650,11 @@ # Is support for the Web GPU API enabled on service workers? - name: dom.webgpu.service-workers.enabled type: RelaxedAtomicBool +#if defined(XP_WIN) || defined(XP_MACOSX) && defined(MOZ_AARCH64) + value: true +#else value: @IS_EARLY_BETA_OR_EARLIER@ +#endif mirror: always # Comma-separated list of wgpu backend names to permit in WebGPU adapters.