summaryrefslogtreecommitdiff
path: root/dom/webidl/Navigator.webidl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/webidl/Navigator.webidl')
-rw-r--r--dom/webidl/Navigator.webidl368
1 files changed, 368 insertions, 0 deletions
diff --git a/dom/webidl/Navigator.webidl b/dom/webidl/Navigator.webidl
new file mode 100644
index 0000000000..56461e4296
--- /dev/null
+++ b/dom/webidl/Navigator.webidl
@@ -0,0 +1,368 @@
+/* -*- 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
+ * http://www.whatwg.org/specs/web-apps/current-work/#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
+ *
+ * © 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.
+ */
+
+// http://www.whatwg.org/specs/web-apps/current-work/#the-navigator-object
+[HeaderFile="Navigator.h"]
+interface Navigator {
+ // objects implementing this interface also implement the interfaces given below
+};
+Navigator implements NavigatorID;
+Navigator implements NavigatorLanguage;
+Navigator implements NavigatorOnLine;
+Navigator implements NavigatorContentUtils;
+Navigator implements NavigatorStorageUtils;
+Navigator implements NavigatorConcurrentHardware;
+Navigator implements NavigatorStorage;
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface NavigatorID {
+ // WebKit/Blink/Trident/Presto support this (hardcoded "Mozilla").
+ [Constant, Cached]
+ readonly attribute DOMString appCodeName; // constant "Mozilla"
+ [Constant, Cached]
+ readonly attribute DOMString appName;
+ [Constant, Cached]
+ readonly attribute DOMString appVersion;
+ [Constant, Cached]
+ readonly attribute DOMString platform;
+ [Pure, Cached, Throws]
+ 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
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface 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;
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface NavigatorOnLine {
+ readonly attribute boolean onLine;
+};
+
+[NoInterfaceObject]
+interface NavigatorContentUtils {
+ // content handler registration
+ [Throws]
+ void registerProtocolHandler(DOMString scheme, DOMString url, DOMString title);
+ [Throws]
+ void registerContentHandler(DOMString mimeType, DOMString url, DOMString title);
+ // NOT IMPLEMENTED
+ //DOMString isProtocolHandlerRegistered(DOMString scheme, DOMString url);
+ //DOMString isContentHandlerRegistered(DOMString mimeType, DOMString url);
+ //void unregisterProtocolHandler(DOMString scheme, DOMString url);
+ //void unregisterContentHandler(DOMString mimeType, DOMString url);
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface NavigatorStorage {
+ [Func="mozilla::dom::StorageManager::PrefEnabled"]
+ readonly attribute StorageManager storage;
+};
+
+[NoInterfaceObject]
+interface NavigatorStorageUtils {
+ // NOT IMPLEMENTED
+ //void yieldForStorageUpdates();
+};
+
+partial interface Navigator {
+ [Throws]
+ readonly attribute Permissions permissions;
+};
+
+// Things that definitely need to be in the spec and and are not for some
+// reason. See https://www.w3.org/Bugs/Public/show_bug.cgi?id=22406
+partial interface Navigator {
+ [Throws]
+ readonly attribute MimeTypeArray mimeTypes;
+ [Throws]
+ readonly attribute PluginArray plugins;
+};
+
+// http://www.w3.org/TR/tracking-dnt/ sort of
+partial interface Navigator {
+ readonly attribute DOMString doNotTrack;
+};
+
+// http://www.w3.org/TR/geolocation-API/#geolocation_interface
+[NoInterfaceObject]
+interface NavigatorGeolocation {
+ [Throws, Pref="geo.enabled"]
+ readonly attribute Geolocation geolocation;
+};
+Navigator implements 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();
+};
+
+partial interface Navigator {
+ [NewObject, Pref="dom.flyweb.enabled"]
+ Promise<FlyWebPublishedServer> publishServer(DOMString name,
+ optional FlyWebPublishOptions options);
+};
+
+// 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);
+ boolean vibrate(unsigned long duration);
+ boolean vibrate(sequence<unsigned long> pattern);
+};
+
+// http://www.w3.org/TR/pointerevents/#extensions-to-the-navigator-interface
+partial interface Navigator {
+ [Pref="dom.w3c_pointer_events.enabled"]
+ readonly attribute long maxTouchPoints;
+};
+
+// 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]
+ void setVibrationPermission(boolean permitted,
+ optional boolean persistent = true);
+};
+
+callback interface MozIdleObserver {
+ // Time is in seconds and is read only when idle observers are added
+ // and removed.
+ readonly attribute unsigned long time;
+ void onidle();
+ void onactive();
+};
+
+// nsIDOMNavigator
+partial interface Navigator {
+ [Throws, Constant, Cached]
+ 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]
+ readonly attribute DOMString buildID;
+ [Throws, ChromeOnly, UnsafeInPrerendering]
+ readonly attribute MozPowerManager mozPower;
+
+ // WebKit/Blink/Trident/Presto support this.
+ [Throws]
+ boolean javaEnabled();
+
+ /**
+ * Navigator requests to add an idle observer to the existing window.
+ */
+ [Throws, ChromeOnly]
+ void addIdleObserver(MozIdleObserver aIdleObserver);
+
+ /**
+ * Navigator requests to remove an idle observer from the existing window.
+ */
+ [Throws, ChromeOnly]
+ void removeIdleObserver(MozIdleObserver aIdleObserver);
+
+ /**
+ * Request a wake lock for a resource.
+ *
+ * A page holds a wake lock to request that a resource not be turned
+ * off (or otherwise made unavailable).
+ *
+ * The topic is the name of a resource that might be made unavailable for
+ * various reasons. For example, on a mobile device the power manager might
+ * decide to turn off the screen after a period of idle time to save power.
+ *
+ * The resource manager checks the lock state of a topic before turning off
+ * the associated resource. For example, a page could hold a lock on the
+ * "screen" topic to prevent the screensaver from appearing or the screen
+ * from turning off.
+ *
+ * The resource manager defines what each topic means and sets policy. For
+ * example, the resource manager might decide to ignore 'screen' wake locks
+ * held by pages which are not visible.
+ *
+ * One topic can be locked multiple times; it is considered released only when
+ * all locks on the topic have been released.
+ *
+ * The returned MozWakeLock object is a token of the lock. You can
+ * unlock the lock via the object's |unlock| method. The lock is released
+ * automatically when its associated window is unloaded.
+ *
+ * @param aTopic resource name
+ */
+ [Throws, Pref="dom.wakelock.enabled", Func="Navigator::HasWakeLockSupport", UnsafeInPrerendering]
+ MozWakeLock requestWakeLock(DOMString aTopic);
+
+ /**
+ * Make CPU instruction subset information available for UpdateUtils.
+ */
+ [ChromeOnly]
+ readonly attribute boolean cpuHasSSE2;
+};
+
+// nsIDOMNavigatorDesktopNotification
+partial interface Navigator {
+ [Throws, Pref="notification.feature.enabled", UnsafeInPrerendering]
+ readonly attribute DesktopNotificationCenter mozNotification;
+};
+
+// NetworkInformation
+partial interface Navigator {
+ [Throws, Pref="dom.netinfo.enabled"]
+ readonly attribute NetworkInformation connection;
+};
+
+#ifdef MOZ_GAMEPAD
+// 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 {
+ [Pref="dom.gamepad.test.enabled"]
+ GamepadServiceTest requestGamepadServiceTest();
+};
+#endif // MOZ_GAMEPAD
+
+partial interface Navigator {
+ [Throws, Pref="dom.vr.enabled"]
+ Promise<sequence<VRDisplay>> getVRDisplays();
+ // TODO: Use FrozenArray once available. (Bug 1236777)
+ [Frozen, Cached, Pure, Pref="dom.vr.enabled"]
+ readonly attribute sequence<VRDisplay> activeVRDisplays;
+};
+
+#ifdef MOZ_TIME_MANAGER
+// nsIDOMMozNavigatorTime
+partial interface Navigator {
+ [Throws, ChromeOnly, UnsafeInPrerendering]
+ readonly attribute MozTimeManager mozTime;
+};
+#endif // MOZ_TIME_MANAGER
+
+#ifdef MOZ_AUDIO_CHANNEL_MANAGER
+// nsIMozNavigatorAudioChannelManager
+partial interface Navigator {
+ [Throws]
+ readonly attribute AudioChannelManager mozAudioChannelManager;
+};
+#endif // MOZ_AUDIO_CHANNEL_MANAGER
+
+callback NavigatorUserMediaSuccessCallback = void (MediaStream stream);
+callback NavigatorUserMediaErrorCallback = void (MediaStreamError error);
+
+partial interface Navigator {
+ [Throws, Func="Navigator::HasUserMediaSupport"]
+ readonly attribute MediaDevices mediaDevices;
+
+ // Deprecated. Use mediaDevices.getUserMedia instead.
+ [Deprecated="NavigatorGetUserMedia", Throws,
+ Func="Navigator::HasUserMediaSupport", UnsafeInPrerendering]
+ void mozGetUserMedia(MediaStreamConstraints constraints,
+ NavigatorUserMediaSuccessCallback successCallback,
+ NavigatorUserMediaErrorCallback errorCallback);
+};
+
+// nsINavigatorUserMedia
+callback MozGetUserMediaDevicesSuccessCallback = void (nsIVariant? devices);
+partial interface Navigator {
+ [Throws, ChromeOnly]
+ void mozGetUserMediaDevices(MediaStreamConstraints constraints,
+ MozGetUserMediaDevicesSuccessCallback onsuccess,
+ NavigatorUserMediaErrorCallback onerror,
+ // The originating innerWindowID is needed to
+ // avoid calling the callbacks if the window has
+ // navigated away. It is optional only as legacy.
+ optional unsigned long long innerWindowID = 0,
+ // The callID is needed in case of multiple
+ // concurrent requests to find the right one.
+ // It is optional only as legacy.
+ // TODO: Rewrite to not need this method anymore,
+ // now that devices are enumerated earlier.
+ optional DOMString callID = "");
+};
+
+// Service Workers/Navigation Controllers
+partial interface Navigator {
+ [Func="ServiceWorkerContainer::IsEnabled", SameObject]
+ readonly attribute ServiceWorkerContainer serviceWorker;
+};
+
+partial interface Navigator {
+ [Throws, Pref="beacon.enabled"]
+ boolean sendBeacon(DOMString url,
+ optional (ArrayBufferView or Blob or DOMString or FormData)? data = null);
+};
+
+partial interface Navigator {
+ [Throws, Pref="dom.presentation.enabled", SameObject]
+ readonly attribute Presentation? presentation;
+};
+
+partial interface Navigator {
+ [NewObject, Func="mozilla::dom::TCPSocket::ShouldTCPSocketExist"]
+ readonly attribute LegacyMozTCPSocket mozTCPSocket;
+};
+
+partial interface Navigator {
+ [Pref="media.eme.apiVisible", NewObject]
+ Promise<MediaKeySystemAccess>
+ requestMediaKeySystemAccess(DOMString keySystem,
+ sequence<MediaKeySystemConfiguration> supportedConfigurations);
+};
+
+#ifdef NIGHTLY_BUILD
+partial interface Navigator {
+ [Func="Navigator::IsE10sEnabled"]
+ readonly attribute boolean mozE10sEnabled;
+};
+#endif
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface NavigatorConcurrentHardware {
+ readonly attribute unsigned long long hardwareConcurrency;
+};