/work/obj-fuzz/dist/include/MediaTrack.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 | | /* vim:set ts=2 sw=2 et tw=78: */ |
3 | | /* This Source Code Form is subject to the terms of the Mozilla Public |
4 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
5 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
6 | | |
7 | | #ifndef mozilla_dom_MediaTrack_h |
8 | | #define mozilla_dom_MediaTrack_h |
9 | | |
10 | | #include "mozilla/DOMEventTargetHelper.h" |
11 | | |
12 | | namespace mozilla { |
13 | | namespace dom { |
14 | | |
15 | | class MediaTrackList; |
16 | | class VideoTrack; |
17 | | class AudioTrack; |
18 | | |
19 | | /** |
20 | | * Base class of AudioTrack and VideoTrack. The AudioTrack and VideoTrack |
21 | | * objects represent specific tracks of a media resource. Each track has aspects |
22 | | * of an identifier, category, label, and language, even if a track is removed |
23 | | * from its corresponding track list, those aspects do not change. |
24 | | * |
25 | | * When fetching the media resource, an audio/video track is created if the |
26 | | * media resource is found to have an audio/video track. When the UA has learned |
27 | | * that an audio/video track has ended, this audio/video track will be removed |
28 | | * from its corresponding track list. |
29 | | * |
30 | | * Although AudioTrack and VideoTrack are not EventTargets, TextTrack is, and |
31 | | * TextTrack inherits from MediaTrack as well (or is going to). |
32 | | */ |
33 | | class MediaTrack : public DOMEventTargetHelper |
34 | | { |
35 | | public: |
36 | | MediaTrack(nsIGlobalObject* aOwnerGlobal, |
37 | | const nsAString& aId, |
38 | | const nsAString& aKind, |
39 | | const nsAString& aLabel, |
40 | | const nsAString& aLanguage); |
41 | | |
42 | | NS_DECL_ISUPPORTS_INHERITED |
43 | | NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaTrack, DOMEventTargetHelper) |
44 | | |
45 | | enum { |
46 | | DEFAULT = 0, |
47 | | FIRE_NO_EVENTS = 1 << 0, |
48 | | }; |
49 | | // The default behavior of enabling an audio track or selecting a video track |
50 | | // fires a change event and notifies its media resource about the changes. |
51 | | // It should not fire any events when fetching media resource. |
52 | | virtual void SetEnabledInternal(bool aEnabled, int aFlags) = 0; |
53 | | |
54 | | virtual AudioTrack* AsAudioTrack() |
55 | | { |
56 | | return nullptr; |
57 | | } |
58 | | |
59 | | virtual VideoTrack* AsVideoTrack() |
60 | | { |
61 | | return nullptr; |
62 | | } |
63 | | |
64 | | const nsString& GetId() const |
65 | | { |
66 | | return mId; |
67 | | } |
68 | | |
69 | | // WebIDL |
70 | | void GetId(nsAString& aId) const |
71 | 0 | { |
72 | 0 | aId = mId; |
73 | 0 | } |
74 | | void GetKind(nsAString& aKind) const |
75 | 0 | { |
76 | 0 | aKind = mKind; |
77 | 0 | } |
78 | | void GetLabel(nsAString& aLabel) const |
79 | 0 | { |
80 | 0 | aLabel = mLabel; |
81 | 0 | } |
82 | | void GetLanguage(nsAString& aLanguage) const |
83 | 0 | { |
84 | 0 | aLanguage = mLanguage; |
85 | 0 | } |
86 | | |
87 | | friend class MediaTrackList; |
88 | | |
89 | | protected: |
90 | | virtual ~MediaTrack(); |
91 | | |
92 | | void SetTrackList(MediaTrackList* aList); |
93 | | |
94 | | RefPtr<MediaTrackList> mList; |
95 | | nsString mId; |
96 | | nsString mKind; |
97 | | nsString mLabel; |
98 | | nsString mLanguage; |
99 | | }; |
100 | | |
101 | | } // namespace dom |
102 | | } // namespace mozilla |
103 | | |
104 | | #endif // mozilla_dom_MediaTrack_h |