mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 14:52:16 +00:00
5068375765
Differential Revision: https://phabricator.services.mozilla.com/D212291
405 lines
14 KiB
Plaintext
405 lines
14 KiB
Plaintext
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* The origin of this IDL file is
|
|
* https://html.spec.whatwg.org/#the-navigator-object
|
|
* http://www.w3.org/TR/tracking-dnt/
|
|
* http://www.w3.org/TR/geolocation-API/#geolocation_interface
|
|
* http://www.w3.org/TR/battery-status/#navigatorbattery-interface
|
|
* http://www.w3.org/TR/vibration/#vibration-interface
|
|
* http://www.w3.org/2012/sysapps/runtime/#extension-to-the-navigator-interface-1
|
|
* https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#navigator-interface-extension
|
|
* http://www.w3.org/TR/beacon/#sec-beacon-method
|
|
* https://html.spec.whatwg.org/#navigatorconcurrenthardware
|
|
* http://wicg.github.io/netinfo/#extensions-to-the-navigator-interface
|
|
* https://w3c.github.io/webappsec-credential-management/#framework-credential-management
|
|
* https://w3c.github.io/webdriver/webdriver-spec.html#interface
|
|
* https://wicg.github.io/media-capabilities/#idl-index
|
|
* https://w3c.github.io/mediasession/#idl-index
|
|
*
|
|
* © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and
|
|
* Opera Software ASA. You are granted a license to use, reproduce
|
|
* and create derivative works of this document.
|
|
*/
|
|
|
|
interface URI;
|
|
|
|
// https://html.spec.whatwg.org/#the-navigator-object
|
|
[HeaderFile="Navigator.h",
|
|
Exposed=Window,
|
|
InstrumentedProps=(canShare,
|
|
clearAppBadge,
|
|
setAppBadge,
|
|
share,
|
|
userActivation,
|
|
wakeLock)]
|
|
interface Navigator {
|
|
// objects implementing this interface also implement the interfaces given below
|
|
};
|
|
Navigator includes NavigatorID;
|
|
Navigator includes NavigatorLanguage;
|
|
Navigator includes NavigatorOnLine;
|
|
Navigator includes NavigatorContentUtils;
|
|
Navigator includes NavigatorStorageUtils;
|
|
Navigator includes NavigatorConcurrentHardware;
|
|
Navigator includes NavigatorStorage;
|
|
Navigator includes NavigatorAutomationInformation;
|
|
Navigator includes NavigatorGPU;
|
|
Navigator includes GlobalPrivacyControl;
|
|
|
|
interface mixin NavigatorID {
|
|
// WebKit/Blink/Trident/Presto support this (hardcoded "Mozilla").
|
|
[Constant, Cached, Throws]
|
|
readonly attribute DOMString appCodeName; // constant "Mozilla"
|
|
[Constant, Cached]
|
|
readonly attribute DOMString appName; // constant "Netscape"
|
|
[Constant, Cached, Throws, NeedsCallerType]
|
|
readonly attribute DOMString appVersion;
|
|
[Pure, Cached, Throws, NeedsCallerType]
|
|
readonly attribute DOMString platform;
|
|
[Pure, Cached, Throws, NeedsCallerType]
|
|
readonly attribute DOMString userAgent;
|
|
[Constant, Cached]
|
|
readonly attribute DOMString product; // constant "Gecko"
|
|
|
|
// Everyone but WebKit/Blink supports this. See bug 679971.
|
|
[Exposed=Window]
|
|
boolean taintEnabled(); // constant false
|
|
};
|
|
|
|
interface mixin NavigatorLanguage {
|
|
|
|
// These two attributes are cached because this interface is also implemented
|
|
// by Workernavigator and this way we don't have to go back to the
|
|
// main-thread from the worker thread anytime we need to retrieve them. They
|
|
// are updated when pref intl.accept_languages is changed.
|
|
|
|
[Pure, Cached]
|
|
readonly attribute DOMString? language;
|
|
[Pure, Cached, Frozen]
|
|
readonly attribute sequence<DOMString> languages;
|
|
};
|
|
|
|
interface mixin NavigatorOnLine {
|
|
readonly attribute boolean onLine;
|
|
};
|
|
|
|
interface mixin NavigatorContentUtils {
|
|
// content handler registration
|
|
[Throws, ChromeOnly]
|
|
undefined checkProtocolHandlerAllowed(DOMString scheme, URI handlerURI, URI documentURI);
|
|
[Throws, SecureContext]
|
|
undefined registerProtocolHandler(DOMString scheme, DOMString url);
|
|
// NOT IMPLEMENTED
|
|
//undefined unregisterProtocolHandler(DOMString scheme, DOMString url);
|
|
};
|
|
|
|
[SecureContext]
|
|
interface mixin NavigatorStorage {
|
|
readonly attribute StorageManager storage;
|
|
};
|
|
|
|
interface mixin NavigatorStorageUtils {
|
|
// NOT IMPLEMENTED
|
|
//undefined yieldForStorageUpdates();
|
|
};
|
|
|
|
partial interface Navigator {
|
|
[Throws]
|
|
readonly attribute Permissions permissions;
|
|
};
|
|
|
|
partial interface Navigator {
|
|
[Throws, SameObject]
|
|
readonly attribute MimeTypeArray mimeTypes;
|
|
[Throws, SameObject]
|
|
readonly attribute PluginArray plugins;
|
|
readonly attribute boolean pdfViewerEnabled;
|
|
};
|
|
|
|
// http://www.w3.org/TR/tracking-dnt/ sort of
|
|
partial interface Navigator {
|
|
readonly attribute DOMString doNotTrack;
|
|
};
|
|
|
|
// https://globalprivacycontrol.github.io/gpc-spec/
|
|
interface mixin GlobalPrivacyControl {
|
|
[Pref="privacy.globalprivacycontrol.functionality.enabled"]
|
|
readonly attribute boolean globalPrivacyControl;
|
|
};
|
|
|
|
// http://www.w3.org/TR/geolocation-API/#geolocation_interface
|
|
interface mixin NavigatorGeolocation {
|
|
[Throws, Pref="geo.enabled"]
|
|
readonly attribute Geolocation geolocation;
|
|
};
|
|
Navigator includes NavigatorGeolocation;
|
|
|
|
// http://www.w3.org/TR/battery-status/#navigatorbattery-interface
|
|
partial interface Navigator {
|
|
// ChromeOnly to prevent web content from fingerprinting users' batteries.
|
|
[Throws, ChromeOnly, Pref="dom.battery.enabled"]
|
|
Promise<BatteryManager> getBattery();
|
|
};
|
|
|
|
// http://www.w3.org/TR/vibration/#vibration-interface
|
|
partial interface Navigator {
|
|
// We don't support sequences in unions yet
|
|
//boolean vibrate ((unsigned long or sequence<unsigned long>) pattern);
|
|
[Pref="dom.vibrator.enabled"]
|
|
boolean vibrate(unsigned long duration);
|
|
[Pref="dom.vibrator.enabled"]
|
|
boolean vibrate(sequence<unsigned long> pattern);
|
|
};
|
|
|
|
// http://www.w3.org/TR/pointerevents/#extensions-to-the-navigator-interface
|
|
partial interface Navigator {
|
|
[NeedsCallerType]
|
|
readonly attribute long maxTouchPoints;
|
|
};
|
|
|
|
// https://wicg.github.io/media-capabilities/#idl-index
|
|
[Exposed=Window]
|
|
partial interface Navigator {
|
|
[SameObject]
|
|
readonly attribute MediaCapabilities mediaCapabilities;
|
|
};
|
|
|
|
// Mozilla-specific extensions
|
|
|
|
// Chrome-only interface for Vibration API permission handling.
|
|
partial interface Navigator {
|
|
/* Set permission state to device vibration.
|
|
* @param permitted permission state (true for allowing vibration)
|
|
* @param persistent make the permission session-persistent
|
|
*/
|
|
[ChromeOnly]
|
|
undefined setVibrationPermission(boolean permitted,
|
|
optional boolean persistent = true);
|
|
};
|
|
|
|
partial interface Navigator {
|
|
[Throws, Constant, Cached, NeedsCallerType]
|
|
readonly attribute DOMString oscpu;
|
|
// WebKit/Blink support this; Trident/Presto do not.
|
|
readonly attribute DOMString vendor;
|
|
// WebKit/Blink supports this (hardcoded ""); Trident/Presto do not.
|
|
readonly attribute DOMString vendorSub;
|
|
// WebKit/Blink supports this (hardcoded "20030107"); Trident/Presto don't
|
|
readonly attribute DOMString productSub;
|
|
// WebKit/Blink/Trident/Presto support this.
|
|
readonly attribute boolean cookieEnabled;
|
|
[Throws, Constant, Cached, NeedsCallerType]
|
|
readonly attribute DOMString buildID;
|
|
|
|
// WebKit/Blink/Trident/Presto support this.
|
|
[Affects=Nothing, DependsOn=Nothing]
|
|
boolean javaEnabled();
|
|
};
|
|
|
|
// Addon manager bits
|
|
partial interface Navigator {
|
|
[Throws, Func="mozilla::AddonManagerWebAPI::IsAPIEnabled"]
|
|
readonly attribute AddonManager mozAddonManager;
|
|
};
|
|
|
|
// NetworkInformation
|
|
partial interface Navigator {
|
|
[Throws, Pref="dom.netinfo.enabled"]
|
|
readonly attribute NetworkInformation connection;
|
|
};
|
|
|
|
// https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#navigator-interface-extension
|
|
partial interface Navigator {
|
|
[Throws, Pref="dom.gamepad.enabled"]
|
|
sequence<Gamepad?> getGamepads();
|
|
};
|
|
partial interface Navigator {
|
|
[Throws, Pref="dom.gamepad.test.enabled"]
|
|
GamepadServiceTest requestGamepadServiceTest();
|
|
};
|
|
|
|
// Chrome-only interface for acquiring all gamepads. Normally, a gamepad can
|
|
// only become visible if it gets interacted by the user. This function bypasses
|
|
// this restriction; it allow requesting all gamepad info without user
|
|
// interacting with the gamepads.
|
|
partial interface Navigator {
|
|
[Throws, ChromeOnly]
|
|
Promise<sequence<Gamepad>> requestAllGamepads();
|
|
};
|
|
|
|
// https://immersive-web.github.io/webvr/spec/1.1/#interface-navigator
|
|
partial interface Navigator {
|
|
[NewObject, SecureContext, Pref="dom.vr.enabled"]
|
|
Promise<sequence<VRDisplay>> getVRDisplays();
|
|
// TODO: Use FrozenArray once available. (Bug 1236777)
|
|
[SecureContext, Frozen, Cached, Pure, Pref="dom.vr.enabled"]
|
|
readonly attribute sequence<VRDisplay> activeVRDisplays;
|
|
[ChromeOnly, Pref="dom.vr.enabled"]
|
|
readonly attribute boolean isWebVRContentDetected;
|
|
[ChromeOnly, Pref="dom.vr.enabled"]
|
|
readonly attribute boolean isWebVRContentPresenting;
|
|
[ChromeOnly, Pref="dom.vr.enabled"]
|
|
undefined requestVRPresentation(VRDisplay display);
|
|
};
|
|
partial interface Navigator {
|
|
[Throws, Pref="dom.vr.puppet.enabled"]
|
|
VRServiceTest requestVRServiceTest();
|
|
};
|
|
|
|
// https://immersive-web.github.io/webxr/#dom-navigator-xr
|
|
partial interface Navigator {
|
|
[SecureContext, SameObject, Throws, Pref="dom.vr.webxr.enabled"]
|
|
readonly attribute XRSystem xr;
|
|
};
|
|
|
|
// http://webaudio.github.io/web-midi-api/#requestmidiaccess
|
|
partial interface Navigator {
|
|
[NewObject, Func="Navigator::HasMidiSupport"]
|
|
Promise<MIDIAccess> requestMIDIAccess(optional MIDIOptions options = {});
|
|
};
|
|
|
|
callback NavigatorUserMediaSuccessCallback = undefined (MediaStream stream);
|
|
callback NavigatorUserMediaErrorCallback = undefined (MediaStreamError error);
|
|
|
|
partial interface Navigator {
|
|
[Throws, Func="Navigator::HasUserMediaSupport"]
|
|
readonly attribute MediaDevices mediaDevices;
|
|
|
|
// Deprecated. Use mediaDevices.getUserMedia instead.
|
|
[Deprecated="NavigatorGetUserMedia", Throws,
|
|
Func="Navigator::HasUserMediaSupport",
|
|
NeedsCallerType,
|
|
UseCounter]
|
|
undefined mozGetUserMedia(MediaStreamConstraints constraints,
|
|
NavigatorUserMediaSuccessCallback successCallback,
|
|
NavigatorUserMediaErrorCallback errorCallback);
|
|
};
|
|
|
|
// Service Workers/Navigation Controllers
|
|
partial interface Navigator {
|
|
[Func="ServiceWorkersEnabled", SameObject, BinaryName="serviceWorkerJS"]
|
|
readonly attribute ServiceWorkerContainer serviceWorker;
|
|
};
|
|
|
|
partial interface Navigator {
|
|
[Throws, Pref="beacon.enabled"]
|
|
boolean sendBeacon(DOMString url,
|
|
optional BodyInit? data = null);
|
|
};
|
|
|
|
partial interface Navigator {
|
|
[NewObject, Func="mozilla::dom::TCPSocket::ShouldTCPSocketExist"]
|
|
readonly attribute LegacyMozTCPSocket mozTCPSocket;
|
|
};
|
|
|
|
partial interface Navigator {
|
|
[NewObject]
|
|
Promise<MediaKeySystemAccess>
|
|
requestMediaKeySystemAccess(DOMString keySystem,
|
|
sequence<MediaKeySystemConfiguration> supportedConfigurations);
|
|
};
|
|
|
|
interface mixin NavigatorConcurrentHardware {
|
|
readonly attribute unsigned long long hardwareConcurrency;
|
|
};
|
|
|
|
// https://w3c.github.io/webappsec-credential-management/#framework-credential-management
|
|
partial interface Navigator {
|
|
[Pref="security.webauth.webauthn", SecureContext, SameObject]
|
|
readonly attribute CredentialsContainer credentials;
|
|
};
|
|
|
|
// https://w3c.github.io/webdriver/webdriver-spec.html#interface
|
|
interface mixin NavigatorAutomationInformation {
|
|
[Constant, Cached]
|
|
readonly attribute boolean webdriver;
|
|
};
|
|
|
|
// https://www.w3.org/TR/clipboard-apis/#navigator-interface
|
|
partial interface Navigator {
|
|
[SecureContext, SameObject]
|
|
readonly attribute Clipboard clipboard;
|
|
};
|
|
|
|
// Used for testing of origin trials.
|
|
partial interface Navigator {
|
|
[Trial="TestTrial"]
|
|
readonly attribute boolean testTrialGatedAttribute;
|
|
};
|
|
|
|
// https://wicg.github.io/web-share/#navigator-interface
|
|
partial interface Navigator {
|
|
[SecureContext, NewObject, Func="Navigator::HasShareSupport"]
|
|
Promise<undefined> share(optional ShareData data = {});
|
|
[SecureContext, Func="Navigator::HasShareSupport"]
|
|
boolean canShare(optional ShareData data = {});
|
|
};
|
|
// https://wicg.github.io/web-share/#sharedata-dictionary
|
|
dictionary ShareData {
|
|
USVString title;
|
|
USVString text;
|
|
USVString url;
|
|
// Note: we don't actually support files yet
|
|
// we have it here for the .canShare() checks.
|
|
sequence<File> files;
|
|
};
|
|
|
|
// https://w3c.github.io/mediasession/#idl-index
|
|
[Exposed=Window]
|
|
partial interface Navigator {
|
|
[SameObject]
|
|
readonly attribute MediaSession mediaSession;
|
|
};
|
|
|
|
// https://w3c.github.io/web-locks/#navigator-mixins
|
|
[SecureContext]
|
|
interface mixin NavigatorLocks {
|
|
readonly attribute LockManager locks;
|
|
};
|
|
Navigator includes NavigatorLocks;
|
|
|
|
// https://w3c.github.io/autoplay/#autoplay-policy
|
|
enum AutoplayPolicy {
|
|
"allowed",
|
|
"allowed-muted",
|
|
"disallowed"
|
|
};
|
|
|
|
enum AutoplayPolicyMediaType {
|
|
"mediaelement",
|
|
"audiocontext"
|
|
};
|
|
|
|
// https://w3c.github.io/autoplay/#autoplay-detection-methods
|
|
partial interface Navigator {
|
|
[Pref="dom.media.autoplay-policy-detection.enabled"]
|
|
AutoplayPolicy getAutoplayPolicy(AutoplayPolicyMediaType type);
|
|
|
|
[Pref="dom.media.autoplay-policy-detection.enabled"]
|
|
AutoplayPolicy getAutoplayPolicy(HTMLMediaElement element);
|
|
|
|
[Pref="dom.media.autoplay-policy-detection.enabled"]
|
|
AutoplayPolicy getAutoplayPolicy(AudioContext context);
|
|
};
|
|
|
|
// https://html.spec.whatwg.org/multipage/interaction.html#the-useractivation-interface
|
|
partial interface Navigator {
|
|
[SameObject] readonly attribute UserActivation userActivation;
|
|
};
|
|
|
|
// https://w3c.github.io/screen-wake-lock/#extensions-to-the-navigator-interface
|
|
[SecureContext]
|
|
partial interface Navigator {
|
|
[SameObject, Pref="dom.screenwakelock.enabled"]
|
|
readonly attribute WakeLock wakeLock;
|
|
};
|
|
|
|
[SecureContext]
|
|
partial interface Navigator {
|
|
[SameObject, Trial="PrivateAttribution"]
|
|
readonly attribute PrivateAttribution privateAttribution;
|
|
};
|