summaryrefslogtreecommitdiffstats
path: root/dom/media/MediaDevices.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/MediaDevices.h')
-rw-r--r--dom/media/MediaDevices.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/dom/media/MediaDevices.h b/dom/media/MediaDevices.h
new file mode 100644
index 000000000..b0984d9d7
--- /dev/null
+++ b/dom/media/MediaDevices.h
@@ -0,0 +1,79 @@
+/* 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/. */
+
+#ifndef mozilla_dom_MediaDevices_h
+#define mozilla_dom_MediaDevices_h
+
+#include "mozilla/ErrorResult.h"
+#include "nsISupportsImpl.h"
+#include "mozilla/DOMEventTargetHelper.h"
+#include "mozilla/dom/BindingUtils.h"
+#include "nsPIDOMWindow.h"
+#include "mozilla/media/DeviceChangeCallback.h"
+
+namespace mozilla {
+namespace dom {
+
+class Promise;
+struct MediaStreamConstraints;
+struct MediaTrackSupportedConstraints;
+
+#define MOZILLA_DOM_MEDIADEVICES_IMPLEMENTATION_IID \
+{ 0x2f784d8a, 0x7485, 0x4280, \
+ { 0x9a, 0x36, 0x74, 0xa4, 0xd6, 0x71, 0xa6, 0xc8 } }
+
+class MediaDevices final : public DOMEventTargetHelper
+ ,public DeviceChangeCallback
+{
+public:
+ explicit MediaDevices(nsPIDOMWindowInner* aWindow) :
+ DOMEventTargetHelper(aWindow) {}
+
+ NS_DECL_ISUPPORTS_INHERITED
+ NS_DECLARE_STATIC_IID_ACCESSOR(MOZILLA_DOM_MEDIADEVICES_IMPLEMENTATION_IID)
+
+ JSObject* WrapObject(JSContext* cx, JS::Handle<JSObject*> aGivenProto) override;
+
+ // No code needed, as MediaTrackSupportedConstraints members default to true.
+ void GetSupportedConstraints(MediaTrackSupportedConstraints& aResult) {};
+
+ already_AddRefed<Promise>
+ GetUserMedia(const MediaStreamConstraints& aConstraints, ErrorResult &aRv);
+
+ already_AddRefed<Promise>
+ EnumerateDevices(ErrorResult &aRv);
+
+ virtual void OnDeviceChange() override;
+
+ mozilla::dom::EventHandlerNonNull* GetOndevicechange();
+
+ void SetOndevicechange(mozilla::dom::EventHandlerNonNull* aCallback);
+
+ NS_IMETHOD AddEventListener(const nsAString& aType,
+ nsIDOMEventListener* aListener,
+ bool aUseCapture, bool aWantsUntrusted,
+ uint8_t optional_argc) override;
+
+ virtual void AddEventListener(const nsAString& aType,
+ dom::EventListener* aListener,
+ const dom::AddEventListenerOptionsOrBoolean& aOptions,
+ const dom::Nullable<bool>& aWantsUntrusted,
+ ErrorResult& aRv) override;
+
+private:
+ class GumResolver;
+ class EnumDevResolver;
+ class GumRejecter;
+
+ virtual ~MediaDevices();
+ nsCOMPtr<nsITimer> mFuzzTimer;
+};
+
+NS_DEFINE_STATIC_IID_ACCESSOR(MediaDevices,
+ MOZILLA_DOM_MEDIADEVICES_IMPLEMENTATION_IID)
+
+} // namespace dom
+} // namespace mozilla
+
+#endif // mozilla_dom_MediaDevices_h