Bug 1685822 [wpt PR 27117] - [Import Maps] Add tests for rejecting multiple import...
[gecko.git] / dom / media / AudioStreamTrack.h
blob18e356cdc52c123a045223f0cfad8c7e89f0ddde
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4 * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef AUDIOSTREAMTRACK_H_
7 #define AUDIOSTREAMTRACK_H_
9 #include "MediaStreamTrack.h"
10 #include "DOMMediaStream.h"
11 #include "CrossGraphPort.h"
12 #include "nsClassHashtable.h"
14 namespace mozilla {
15 namespace dom {
17 class AudioStreamTrack : public MediaStreamTrack {
18 public:
19 AudioStreamTrack(
20 nsPIDOMWindowInner* aWindow, mozilla::MediaTrack* aInputTrack,
21 MediaStreamTrackSource* aSource,
22 MediaStreamTrackState aReadyState = MediaStreamTrackState::Live,
23 bool aMuted = false,
24 const MediaTrackConstraints& aConstraints = MediaTrackConstraints())
25 : MediaStreamTrack(aWindow, aInputTrack, aSource, aReadyState, aMuted,
26 aConstraints) {}
28 AudioStreamTrack* AsAudioStreamTrack() override { return this; }
29 const AudioStreamTrack* AsAudioStreamTrack() const override { return this; }
31 void AddAudioOutput(void* aKey);
32 void RemoveAudioOutput(void* aKey);
33 void SetAudioOutputVolume(void* aKey, float aVolume);
34 RefPtr<GenericPromise> SetAudioOutputDevice(void* key,
35 AudioDeviceInfo* aSink);
37 // WebIDL
38 void GetKind(nsAString& aKind) override { aKind.AssignLiteral("audio"); }
40 void GetLabel(nsAString& aLabel, CallerType aCallerType) override;
42 protected:
43 already_AddRefed<MediaStreamTrack> CloneInternal() override;
44 void SetReadyState(MediaStreamTrackState aState) override;
46 private:
47 // Track CrossGraphPort per AudioOutput key. This is required in order to
48 // redirect all AudioOutput requests (add, remove, set volume) to the
49 // receiver track which, belonging to the remote graph. MainThread only.
50 nsClassHashtable<nsPtrHashKey<void>, UniquePtr<CrossGraphPort>> mCrossGraphs;
53 } // namespace dom
54 } // namespace mozilla
56 #endif /* AUDIOSTREAMTRACK_H_ */