From 219dc269c729ee8be6d169d21d7ba6ab5aeb7451 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Mon, 4 Mar 2019 22:43:38 +0900 Subject: [PATCH] add Permissions types --- baselines/dom.generated.d.ts | 49 ++++++++++++++++++++++++ baselines/webworker.generated.d.ts | 49 ++++++++++++++++++++++++ inputfiles/idl/Permissions.widl | 61 ++++++++++++++++++++++++++++++ inputfiles/idlSources.json | 4 ++ inputfiles/knownTypes.json | 10 +++++ inputfiles/overridingTypes.json | 44 +++++++++++++++++++++ src/idlfetcher.ts | 3 +- 7 files changed, 219 insertions(+), 1 deletion(-) create mode 100644 inputfiles/idl/Permissions.widl diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index 7a980ebbd..0709f7638 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -334,6 +334,11 @@ interface DeviceOrientationEventInit extends EventInit { gamma?: number | null; } +interface DevicePermissionDescriptor extends PermissionDescriptor { + deviceId?: string; + name: "camera" | "microphone" | "speaker"; +} + interface DeviceRotationRateDict { alpha?: number | null; beta?: number | null; @@ -733,6 +738,11 @@ interface MessageEventInit extends EventInit { source?: MessageEventSource | null; } +interface MidiPermissionDescriptor extends PermissionDescriptor { + name: "midi"; + sysex?: boolean; +} + interface MouseEventInit extends EventModifierInit { button?: number; buttons?: number; @@ -906,6 +916,10 @@ interface PeriodicWaveOptions extends PeriodicWaveConstraints { real?: number[] | Float32Array; } +interface PermissionDescriptor { + name: PermissionName; +} + interface PipeOptions { preventAbort?: boolean; preventCancel?: boolean; @@ -953,6 +967,11 @@ interface PropertyIndexedKeyframes { [property: string]: string | string[] | number | null | (number | null)[] | undefined; } +interface PushPermissionDescriptor extends PermissionDescriptor { + name: "push"; + userVisibleOnly?: boolean; +} + interface PushSubscriptionJSON { endpoint?: string; expirationTime?: number | null; @@ -10498,6 +10517,7 @@ interface Navigator extends NavigatorID, NavigatorOnLine, NavigatorContentUtils, readonly msManipulationViewsEnabled: boolean; readonly msMaxTouchPoints: number; readonly msPointerEnabled: boolean; + readonly permissions: Permissions; readonly plugins: PluginArray; readonly pointerEnabled: boolean; readonly serviceWorker: ServiceWorkerContainer; @@ -11371,6 +11391,33 @@ declare var PermissionRequestedEvent: { new(): PermissionRequestedEvent; }; +interface PermissionStatusEventMap { + "change": Event; +} + +interface PermissionStatus extends EventTarget { + onchange: ((this: PermissionStatus, ev: Event) => any) | null; + readonly state: PermissionState; + addEventListener(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; + removeEventListener(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; +} + +declare var PermissionStatus: { + prototype: PermissionStatus; + new(): PermissionStatus; +}; + +interface Permissions { + query(permissionDesc: PermissionDescriptor | DevicePermissionDescriptor | MidiPermissionDescriptor | PushPermissionDescriptor): Promise; +} + +declare var Permissions: { + prototype: Permissions; + new(): Permissions; +}; + /** The Plugin interface provides information about a browser plugin. */ interface Plugin { readonly description: string; @@ -18357,6 +18404,8 @@ type OverSampleType = "none" | "2x" | "4x"; type PanningModelType = "equalpower" | "HRTF"; type PaymentComplete = "success" | "fail" | "unknown"; type PaymentShippingType = "shipping" | "delivery" | "pickup"; +type PermissionName = "geolocation" | "notifications" | "push" | "midi" | "camera" | "microphone" | "speaker" | "device-info" | "background-sync" | "bluetooth" | "persistent-storage" | "ambient-light-sensor" | "accelerometer" | "gyroscope" | "magnetometer" | "clipboard"; +type PermissionState = "granted" | "denied" | "prompt"; type PlaybackDirection = "normal" | "reverse" | "alternate" | "alternate-reverse"; type PositionAlignSetting = "line-left" | "center" | "line-right" | "auto"; type PushEncryptionKeyName = "p256dh" | "auth"; diff --git a/baselines/webworker.generated.d.ts b/baselines/webworker.generated.d.ts index 41447784a..6ce503456 100644 --- a/baselines/webworker.generated.d.ts +++ b/baselines/webworker.generated.d.ts @@ -120,6 +120,11 @@ interface DOMRectInit { y?: number; } +interface DevicePermissionDescriptor extends PermissionDescriptor { + deviceId?: string; + name: "camera" | "microphone" | "speaker"; +} + interface EcKeyGenParams extends Algorithm { namedCurve: NamedCurve; } @@ -243,6 +248,11 @@ interface MessageEventInit extends EventInit { source?: MessageEventSource | null; } +interface MidiPermissionDescriptor extends PermissionDescriptor { + name: "midi"; + sysex?: boolean; +} + interface NavigationPreloadState { enabled?: boolean; headerValue?: string; @@ -287,6 +297,10 @@ interface PerformanceObserverInit { entryTypes: string[]; } +interface PermissionDescriptor { + name: PermissionName; +} + interface PipeOptions { preventAbort?: boolean; preventCancel?: boolean; @@ -308,6 +322,11 @@ interface PushEventInit extends ExtendableEventInit { data?: PushMessageDataInit; } +interface PushPermissionDescriptor extends PermissionDescriptor { + name: "push"; + userVisibleOnly?: boolean; +} + interface PushSubscriptionChangeInit extends ExtendableEventInit { newSubscription?: PushSubscription; oldSubscription?: PushSubscription; @@ -2320,6 +2339,33 @@ declare var PerformanceResourceTiming: { new(): PerformanceResourceTiming; }; +interface PermissionStatusEventMap { + "change": Event; +} + +interface PermissionStatus extends EventTarget { + onchange: ((this: PermissionStatus, ev: Event) => any) | null; + readonly state: PermissionState; + addEventListener(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; + removeEventListener(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; +} + +declare var PermissionStatus: { + prototype: PermissionStatus; + new(): PermissionStatus; +}; + +interface Permissions { + query(permissionDesc: PermissionDescriptor | DevicePermissionDescriptor | MidiPermissionDescriptor | PushPermissionDescriptor): Promise; +} + +declare var Permissions: { + prototype: Permissions; + new(): Permissions; +}; + /** The ProgressEvent interface represents events measuring progress of an underlying process, like an HTTP request (for an XMLHttpRequest, or the loading of the underlying resource of an ,