api: Flatten and simplify Servo preferences (#34966)

Flatten and simplify Servo's preferences code. In addition, have both
preferences and options passed in as arguments to `Servo::new()` and
make sure not to use the globally set preferences in `servoshell` (as
much as possible now).

Instead of a complex procedural macro to generate preferences, just
expose a very simple derive macro that adds string based getters and
setters.

- All command-line parsing is moved to servoshell.
- There is no longer the concept of a missing preference.
- Preferences no longer have to be part of the resources bundle because
  they now have reasonable default values.
- servoshell specific preferences are no longer part of the preferences
  exposed by the Servo API.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
Martin Robinson 2025-01-14 14:54:06 +01:00 committed by GitHub
parent c4c85affb5
commit 0e616e0c5d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
316 changed files with 2088 additions and 3235 deletions

View file

@ -16,7 +16,7 @@ dictionary GPUObjectDescriptorBase {
USVString label = "";
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUSupportedLimits {
readonly attribute unsigned long maxTextureDimension1D;
readonly attribute unsigned long maxTextureDimension2D;
@ -52,17 +52,17 @@ interface GPUSupportedLimits {
readonly attribute unsigned long maxComputeWorkgroupsPerDimension;
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUSupportedFeatures {
readonly setlike<DOMString>;
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface WGSLLanguageFeatures {
readonly setlike<DOMString>;
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUAdapterInfo {
readonly attribute DOMString vendor;
readonly attribute DOMString architecture;
@ -71,13 +71,13 @@ interface GPUAdapterInfo {
};
interface mixin NavigatorGPU {
[SameObject, Pref="dom.webgpu.enabled", Exposed=(Window /* ,DedicatedWorker */)] readonly attribute GPU gpu;
[SameObject, Pref="dom_webgpu_enabled", Exposed=(Window /* ,DedicatedWorker */)] readonly attribute GPU gpu;
};
Navigator includes NavigatorGPU;
WorkerNavigator includes NavigatorGPU;
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPU {
[NewObject]
Promise<GPUAdapter?> requestAdapter(optional GPURequestAdapterOptions options = {});
@ -95,7 +95,7 @@ enum GPUPowerPreference {
"high-performance"
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUAdapter {
[SameObject] readonly attribute GPUSupportedFeatures features;
[SameObject] readonly attribute GPUSupportedLimits limits;
@ -129,7 +129,7 @@ enum GPUFeatureName {
"dual-source-blending",
};
[Exposed=(Window, DedicatedWorker), /*Serializable,*/ Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), /*Serializable,*/ Pref="dom_webgpu_enabled"]
interface GPUDevice: EventTarget {
[SameObject] readonly attribute GPUSupportedFeatures features;
[SameObject] readonly attribute GPUSupportedLimits limits;
@ -170,7 +170,7 @@ interface GPUDevice: EventTarget {
};
GPUDevice includes GPUObjectBase;
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPUBuffer {
readonly attribute GPUSize64Out size;
readonly attribute GPUFlagsConstant usage;
@ -201,7 +201,7 @@ dictionary GPUBufferDescriptor : GPUObjectDescriptorBase {
};
typedef [EnforceRange] unsigned long GPUBufferUsageFlags;
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
namespace GPUBufferUsage {
const GPUFlagsConstant MAP_READ = 0x0001;
const GPUFlagsConstant MAP_WRITE = 0x0002;
@ -216,13 +216,13 @@ namespace GPUBufferUsage {
};
typedef [EnforceRange] unsigned long GPUMapModeFlags;
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
namespace GPUMapMode {
const GPUFlagsConstant READ = 0x0001;
const GPUFlagsConstant WRITE = 0x0002;
};
[Exposed=(Window, DedicatedWorker), Serializable , Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable , Pref="dom_webgpu_enabled"]
interface GPUTexture {
[Throws, NewObject]
GPUTextureView createView(optional GPUTextureViewDescriptor descriptor = {});
@ -257,7 +257,7 @@ enum GPUTextureDimension {
};
typedef [EnforceRange] unsigned long GPUTextureUsageFlags;
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUTextureUsage {
const GPUTextureUsageFlags COPY_SRC = 0x01;
const GPUTextureUsageFlags COPY_DST = 0x02;
@ -266,7 +266,7 @@ interface GPUTextureUsage {
const GPUTextureUsageFlags RENDER_ATTACHMENT = 0x10;
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUTextureView {
};
GPUTextureView includes GPUObjectBase;
@ -418,7 +418,7 @@ enum GPUTextureFormat {
"astc-12x12-unorm-srgb",
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUSampler {
};
GPUSampler includes GPUObjectBase;
@ -458,7 +458,7 @@ enum GPUCompareFunction {
"always"
};
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPUBindGroupLayout {
};
GPUBindGroupLayout includes GPUObjectBase;
@ -479,7 +479,7 @@ dictionary GPUBindGroupLayoutEntry {
};
typedef [EnforceRange] unsigned long GPUShaderStageFlags;
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPUShaderStage {
const GPUShaderStageFlags VERTEX = 1;
const GPUShaderStageFlags FRAGMENT = 2;
@ -537,7 +537,7 @@ dictionary GPUStorageTextureBindingLayout {
dictionary GPUExternalTextureBindingLayout {
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUBindGroup {
};
GPUBindGroup includes GPUObjectBase;
@ -560,7 +560,7 @@ dictionary GPUBufferBinding {
GPUSize64 size;
};
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPUPipelineLayout {
};
GPUPipelineLayout includes GPUObjectBase;
@ -569,7 +569,7 @@ dictionary GPUPipelineLayoutDescriptor : GPUObjectDescriptorBase {
required sequence<GPUBindGroupLayout> bindGroupLayouts;
};
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPUShaderModule {
Promise<GPUCompilationInfo> getCompilationInfo();
};
@ -587,7 +587,7 @@ enum GPUCompilationMessageType {
"info"
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUCompilationMessage {
readonly attribute DOMString message;
readonly attribute GPUCompilationMessageType type;
@ -597,13 +597,13 @@ interface GPUCompilationMessage {
readonly attribute unsigned long long length;
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUCompilationInfo {
//readonly attribute FrozenArray<GPUCompilationMessage> messages;
readonly attribute any messages;
};
[Exposed=(Window, Worker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, Worker), Pref="dom_webgpu_enabled"]
interface GPUPipelineError : DOMException {
constructor(optional DOMString message = "", GPUPipelineErrorInit options);
readonly attribute GPUPipelineErrorReason reason;
@ -638,7 +638,7 @@ dictionary GPUProgrammableStage {
typedef double GPUPipelineConstantValue; // May represent WGSL's bool, f32, i32, u32, and f16 if enabled.
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPUComputePipeline {
};
GPUComputePipeline includes GPUObjectBase;
@ -648,7 +648,7 @@ dictionary GPUComputePipelineDescriptor : GPUPipelineDescriptorBase {
required GPUProgrammableStage compute;
};
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPURenderPipeline {
};
GPURenderPipeline includes GPUObjectBase;
@ -712,7 +712,7 @@ dictionary GPUBlendState {
};
typedef [EnforceRange] unsigned long GPUColorWriteFlags;
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUColorWrite {
const GPUColorWriteFlags RED = 0x1;
const GPUColorWriteFlags GREEN = 0x2;
@ -873,7 +873,7 @@ dictionary GPUImageCopyExternalImage {
boolean flipY = false;
};
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPUCommandBuffer {
};
GPUCommandBuffer includes GPUObjectBase;
@ -881,7 +881,7 @@ GPUCommandBuffer includes GPUObjectBase;
dictionary GPUCommandBufferDescriptor : GPUObjectDescriptorBase {
};
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPUCommandEncoder {
[NewObject]
GPUComputePassEncoder beginComputePass(optional GPUComputePassDescriptor descriptor = {});
@ -939,11 +939,11 @@ dictionary GPUCommandEncoderDescriptor : GPUObjectDescriptorBase {
boolean measureExecutionTime = false;
};
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPUComputePassEncoder {
undefined setPipeline(GPUComputePipeline pipeline);
undefined dispatchWorkgroups(GPUSize32 x, optional GPUSize32 y = 1, optional GPUSize32 z = 1);
//[Pref="dom.webgpu.indirect-dispatch.enabled"]
//[Pref="dom_webgpu_indirect-dispatch.enabled"]
undefined dispatchWorkgroupsIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset);
undefined end();
@ -954,7 +954,7 @@ GPUComputePassEncoder includes GPUProgrammablePassEncoder;
dictionary GPUComputePassDescriptor : GPUObjectDescriptorBase {
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPURenderPassEncoder {
undefined setViewport(float x, float y,
float width, float height,
@ -1063,13 +1063,13 @@ interface mixin GPURenderEncoderBase {
optional GPUSignedOffset32 baseVertex = 0,
optional GPUSize32 firstInstance = 0);
//[Pref="dom.webgpu.indirect-dispatch.enabled"]
//[Pref="dom_webgpu_indirect-dispatch.enabled"]
undefined drawIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset);
//[Pref="dom.webgpu.indirect-dispatch.enabled"]
//[Pref="dom_webgpu_indirect-dispatch.enabled"]
undefined drawIndexedIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset);
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPURenderBundle {
};
GPURenderBundle includes GPUObjectBase;
@ -1077,7 +1077,7 @@ GPURenderBundle includes GPUObjectBase;
dictionary GPURenderBundleDescriptor : GPUObjectDescriptorBase {
};
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPURenderBundleEncoder {
GPURenderBundle finish(optional GPURenderBundleDescriptor descriptor = {});
};
@ -1090,7 +1090,7 @@ dictionary GPURenderBundleEncoderDescriptor : GPURenderPassLayout {
boolean stencilReadOnly = false;
};
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPUQueue {
undefined submit(sequence<GPUCommandBuffer> buffers);
@ -1119,7 +1119,7 @@ interface GPUQueue {
};
GPUQueue includes GPUObjectBase;
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom_webgpu_enabled"]
interface GPUQuerySet {
undefined destroy();
};
@ -1173,7 +1173,7 @@ enum GPUDeviceLostReason {
"destroyed",
};
[Exposed=(Window, Worker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, Worker), Pref="dom_webgpu_enabled"]
interface GPUDeviceLostInfo {
readonly attribute GPUDeviceLostReason reason;
readonly attribute DOMString message;
@ -1183,24 +1183,24 @@ partial interface GPUDevice {
readonly attribute Promise<GPUDeviceLostInfo> lost;
};
[Exposed=(Window, Worker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, Worker), Pref="dom_webgpu_enabled"]
interface GPUError {
readonly attribute DOMString message;
};
[Exposed=(Window, Worker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, Worker), Pref="dom_webgpu_enabled"]
interface GPUValidationError
: GPUError {
constructor(DOMString message);
};
[Exposed=(Window, Worker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, Worker), Pref="dom_webgpu_enabled"]
interface GPUOutOfMemoryError
: GPUError {
constructor(DOMString message);
};
[Exposed=(Window, Worker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, Worker), Pref="dom_webgpu_enabled"]
interface GPUInternalError
: GPUError {
constructor(DOMString message);
@ -1218,7 +1218,7 @@ partial interface GPUDevice {
Promise<GPUError?> popErrorScope();
};
[Exposed=(Window, Worker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, Worker), Pref="dom_webgpu_enabled"]
interface GPUUncapturedErrorEvent : Event {
constructor(
DOMString type,