From ced7d7f428dac456e4c78bc80b713d186fc4d382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Thu, 15 Jun 2023 10:37:22 +0200 Subject: [PATCH] Add augmentable `PermissionNameMap` --- baselines/dom.generated.d.ts | 11 +++- baselines/serviceworker.generated.d.ts | 11 +++- baselines/sharedworker.generated.d.ts | 11 +++- baselines/webworker.generated.d.ts | 11 +++- inputfiles/addedTypes.jsonc | 73 ++++++++++++++++++-------- inputfiles/knownTypes.json | 2 + 6 files changed, 94 insertions(+), 25 deletions(-) diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index 95307ebba..6f80cae72 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -1161,6 +1161,15 @@ interface PermissionDescriptor { name: PermissionName; } +interface PermissionNameMap { + "persistent-storage": "persistent-storage"; + "screen-wake-lock": "screen-wake-lock"; + "xr-spatial-tracking": "xr-spatial-tracking"; + geolocation: "geolocation"; + notifications: "notifications"; + push: "push"; +} + interface PictureInPictureEventInit extends EventInit { pictureInPictureWindow: PictureInPictureWindow; } @@ -27977,6 +27986,7 @@ type OffscreenRenderingContext = OffscreenCanvasRenderingContext2D | ImageBitmap type OnBeforeUnloadEventHandler = OnBeforeUnloadEventHandlerNonNull | null; type OnErrorEventHandler = OnErrorEventHandlerNonNull | null; type PerformanceEntryList = PerformanceEntry[]; +type PermissionName = keyof PermissionNameMap; type ReadableStreamController = ReadableStreamDefaultController | ReadableByteStreamController; type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; type ReadableStreamReader = ReadableStreamDefaultReader | ReadableStreamBYOBReader; @@ -28087,7 +28097,6 @@ type OscillatorType = "custom" | "sawtooth" | "sine" | "square" | "triangle"; type OverSampleType = "2x" | "4x" | "none"; type PanningModelType = "HRTF" | "equalpower"; type PaymentComplete = "fail" | "success" | "unknown"; -type PermissionName = "geolocation" | "notifications" | "persistent-storage" | "push" | "screen-wake-lock" | "xr-spatial-tracking"; type PermissionState = "denied" | "granted" | "prompt"; type PlaybackDirection = "alternate" | "alternate-reverse" | "normal" | "reverse"; type PositionAlignSetting = "auto" | "center" | "line-left" | "line-right"; diff --git a/baselines/serviceworker.generated.d.ts b/baselines/serviceworker.generated.d.ts index d50c1aabb..0688d8b59 100644 --- a/baselines/serviceworker.generated.d.ts +++ b/baselines/serviceworker.generated.d.ts @@ -451,6 +451,15 @@ interface PermissionDescriptor { name: PermissionName; } +interface PermissionNameMap { + "persistent-storage": "persistent-storage"; + "screen-wake-lock": "screen-wake-lock"; + "xr-spatial-tracking": "xr-spatial-tracking"; + geolocation: "geolocation"; + notifications: "notifications"; + push: "push"; +} + interface ProgressEventInit extends EventInit { lengthComputable?: boolean; loaded?: number; @@ -8532,6 +8541,7 @@ type NamedCurve = string; type OffscreenRenderingContext = OffscreenCanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext; type OnErrorEventHandler = OnErrorEventHandlerNonNull | null; type PerformanceEntryList = PerformanceEntry[]; +type PermissionName = keyof PermissionNameMap; type PushMessageDataInit = BufferSource | string; type ReadableStreamController = ReadableStreamDefaultController | ReadableByteStreamController; type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; @@ -8585,7 +8595,6 @@ type MediaEncodingType = "record" | "webrtc"; type NotificationDirection = "auto" | "ltr" | "rtl"; type NotificationPermission = "default" | "denied" | "granted"; type OffscreenRenderingContextId = "2d" | "bitmaprenderer" | "webgl" | "webgl2" | "webgpu"; -type PermissionName = "geolocation" | "notifications" | "persistent-storage" | "push" | "screen-wake-lock" | "xr-spatial-tracking"; type PermissionState = "denied" | "granted" | "prompt"; type PredefinedColorSpace = "display-p3" | "srgb"; type PremultiplyAlpha = "default" | "none" | "premultiply"; diff --git a/baselines/sharedworker.generated.d.ts b/baselines/sharedworker.generated.d.ts index f13655152..dd3f228a4 100644 --- a/baselines/sharedworker.generated.d.ts +++ b/baselines/sharedworker.generated.d.ts @@ -421,6 +421,15 @@ interface PermissionDescriptor { name: PermissionName; } +interface PermissionNameMap { + "persistent-storage": "persistent-storage"; + "screen-wake-lock": "screen-wake-lock"; + "xr-spatial-tracking": "xr-spatial-tracking"; + geolocation: "geolocation"; + notifications: "notifications"; + push: "push"; +} + interface ProgressEventInit extends EventInit { lengthComputable?: boolean; loaded?: number; @@ -8541,6 +8550,7 @@ type NamedCurve = string; type OffscreenRenderingContext = OffscreenCanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext; type OnErrorEventHandler = OnErrorEventHandlerNonNull | null; type PerformanceEntryList = PerformanceEntry[]; +type PermissionName = keyof PermissionNameMap; type ReadableStreamController = ReadableStreamDefaultController | ReadableByteStreamController; type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; type ReadableStreamReader = ReadableStreamDefaultReader | ReadableStreamBYOBReader; @@ -8591,7 +8601,6 @@ type MediaEncodingType = "record" | "webrtc"; type NotificationDirection = "auto" | "ltr" | "rtl"; type NotificationPermission = "default" | "denied" | "granted"; type OffscreenRenderingContextId = "2d" | "bitmaprenderer" | "webgl" | "webgl2" | "webgpu"; -type PermissionName = "geolocation" | "notifications" | "persistent-storage" | "push" | "screen-wake-lock" | "xr-spatial-tracking"; type PermissionState = "denied" | "granted" | "prompt"; type PredefinedColorSpace = "display-p3" | "srgb"; type PremultiplyAlpha = "default" | "none" | "premultiply"; diff --git a/baselines/webworker.generated.d.ts b/baselines/webworker.generated.d.ts index 67e3bfd91..6afd83b6c 100644 --- a/baselines/webworker.generated.d.ts +++ b/baselines/webworker.generated.d.ts @@ -470,6 +470,15 @@ interface PermissionDescriptor { name: PermissionName; } +interface PermissionNameMap { + "persistent-storage": "persistent-storage"; + "screen-wake-lock": "screen-wake-lock"; + "xr-spatial-tracking": "xr-spatial-tracking"; + geolocation: "geolocation"; + notifications: "notifications"; + push: "push"; +} + interface PlaneLayout { offset: number; stride: number; @@ -9213,6 +9222,7 @@ type NamedCurve = string; type OffscreenRenderingContext = OffscreenCanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext; type OnErrorEventHandler = OnErrorEventHandlerNonNull | null; type PerformanceEntryList = PerformanceEntry[]; +type PermissionName = keyof PermissionNameMap; type PushMessageDataInit = BufferSource | string; type ReadableStreamController = ReadableStreamDefaultController | ReadableByteStreamController; type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; @@ -9272,7 +9282,6 @@ type MediaEncodingType = "record" | "webrtc"; type NotificationDirection = "auto" | "ltr" | "rtl"; type NotificationPermission = "default" | "denied" | "granted"; type OffscreenRenderingContextId = "2d" | "bitmaprenderer" | "webgl" | "webgl2" | "webgpu"; -type PermissionName = "geolocation" | "notifications" | "persistent-storage" | "push" | "screen-wake-lock" | "xr-spatial-tracking"; type PermissionState = "denied" | "granted" | "prompt"; type PredefinedColorSpace = "display-p3" | "srgb"; type PremultiplyAlpha = "default" | "none" | "premultiply"; diff --git a/inputfiles/addedTypes.jsonc b/inputfiles/addedTypes.jsonc index c2d236a40..00e13a368 100644 --- a/inputfiles/addedTypes.jsonc +++ b/inputfiles/addedTypes.jsonc @@ -331,27 +331,6 @@ "color", "luminosity" ] - }, - "PermissionName": { - "name": "PermissionName", - // This is a subset of the permissions defined in the spec: - // https://w3c.github.io/powerful-features-registry/#registry-table-of-powerful-features - // Please add a feature only when it's supported by multiple engines. - "value": [ - // https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API#browser_compatibility - "geolocation", - // https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API#browser_compatibility - "notifications", - // https://developer.mozilla.org/en-US/docs/Web/API/Storage_API#browser_compatibility - "persistent-storage", - // https://developer.mozilla.org/en-US/docs/Web/API/Push_API#browser_compatibility - "push", - // https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API#browser_compatibility - "screen-wake-lock", - // WebXR is also actually Blink-only - // https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API#browser_compatibility - "xr-spatial-tracking" - ] } } }, @@ -1312,6 +1291,54 @@ } } } + }, + // This is a subset of the permissions defined in the spec: + // https://w3c.github.io/powerful-features-registry/#registry-table-of-powerful-features + // Please add a feature only when it's supported by multiple engines., + "PermissionNameMap": { + "name": "PermissionNameMap", + "exposed": "Window Worker Worklet", + "members": { + "member": { + // https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API#browser_compatibility + "geolocation": { + "name": "geolocation", + "overrideType": "\"geolocation\"", + "required": 1 + }, + // https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API#browser_compatibility + "notifications": { + "name": "notifications", + "overrideType": "\"notifications\"", + "required": 1 + }, + // https://developer.mozilla.org/en-US/docs/Web/API/Storage_API#browser_compatibility + "\"persistent-storage\"": { + "name": "\"persistent-storage\"", + "overrideType": "\"persistent-storage\"", + "required": 1 + }, + // https://developer.mozilla.org/en-US/docs/Web/API/Push_API#browser_compatibility + "push": { + "name": "push", + "overrideType": "\"push\"", + "required": 1 + }, + // https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API#browser_compatibility + "\"screen-wake-lock\"": { + "name": "\"screen-wake-lock\"", + "overrideType": "\"screen-wake-lock\"", + "required": 1 + }, + // WebXR is also actually Blink-only + // https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API#browser_compatibility + "\"xr-spatial-tracking\"": { + "name": "\"xr-spatial-tracking\"", + "overrideType": "\"xr-spatial-tracking\"", + "required": 1 + } + } + } } } }, @@ -1422,6 +1449,10 @@ { "name": "EventListenerOrEventListenerObject", "overrideType": "EventListener | EventListenerObject" + }, + { + "name": "PermissionName", + "overrideType": "keyof PermissionNameMap" } ] } diff --git a/inputfiles/knownTypes.json b/inputfiles/knownTypes.json index aba727e73..65ca7206a 100644 --- a/inputfiles/knownTypes.json +++ b/inputfiles/knownTypes.json @@ -29,6 +29,7 @@ "Keyframe", "MutationRecordType", "NamedCurve", + "PermissionNameMap", "Pbkdf2Params", "PropertyIndexedKeyframes", "RsaHashedImportParams", @@ -75,6 +76,7 @@ "ImageBitmapRenderingContextSettings", "ImportMeta", "NamedCurve", + "PermissionNameMap", "Pbkdf2Params", "RsaHashedImportParams", "RsaHashedKeyGenParams",