content/media/TextTrack.h

branch
TOR_BUG_9701
changeset 13
44a2da4a2ab2
equal deleted inserted replaced
-1:000000000000 0:343f83dd5e35
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_TextTrack_h
8 #define mozilla_dom_TextTrack_h
9
10 #include "mozilla/DOMEventTargetHelper.h"
11 #include "mozilla/dom/TextTrackBinding.h"
12 #include "nsCOMPtr.h"
13 #include "nsCycleCollectionParticipant.h"
14 #include "nsString.h"
15
16 namespace mozilla {
17 namespace dom {
18
19 class TextTrackList;
20 class TextTrackCue;
21 class TextTrackCueList;
22 class TextTrackRegion;
23 class HTMLTrackElement;
24
25 enum TextTrackSource {
26 Track,
27 AddTextTrack,
28 MediaResourceSpecific
29 };
30
31 // Constants for numeric readyState property values.
32 enum TextTrackReadyState {
33 NotLoaded = 0U,
34 Loading = 1U,
35 Loaded = 2U,
36 FailedToLoad = 3U
37 };
38
39 class TextTrack MOZ_FINAL : public DOMEventTargetHelper
40 {
41 public:
42 NS_DECL_ISUPPORTS_INHERITED
43 NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(TextTrack, DOMEventTargetHelper)
44
45 TextTrack(nsPIDOMWindow* aOwnerWindow,
46 TextTrackKind aKind,
47 const nsAString& aLabel,
48 const nsAString& aLanguage,
49 TextTrackMode aMode,
50 TextTrackReadyState aReadyState,
51 TextTrackSource aTextTrackSource);
52 TextTrack(nsPIDOMWindow* aOwnerWindow,
53 TextTrackList* aTextTrackList,
54 TextTrackKind aKind,
55 const nsAString& aLabel,
56 const nsAString& aLanguage,
57 TextTrackMode aMode,
58 TextTrackReadyState aReadyState,
59 TextTrackSource aTextTrackSource);
60
61 void SetDefaultSettings();
62
63 virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
64
65 TextTrackKind Kind() const
66 {
67 return mKind;
68 }
69 void GetLabel(nsAString& aLabel) const
70 {
71 aLabel = mLabel;
72 }
73 void GetLanguage(nsAString& aLanguage) const
74 {
75 aLanguage = mLanguage;
76 }
77 void GetInBandMetadataTrackDispatchType(nsAString& aType) const
78 {
79 aType = mType;
80 }
81 void GetId(nsAString& aId) const;
82
83 TextTrackMode Mode() const
84 {
85 return mMode;
86 }
87 void SetMode(TextTrackMode aValue);
88
89 TextTrackCueList* GetCues() const
90 {
91 if (mMode == TextTrackMode::Disabled) {
92 return nullptr;
93 }
94 return mCueList;
95 }
96
97 TextTrackCueList* GetActiveCues();
98 void UpdateActiveCueList();
99 void GetActiveCueArray(nsTArray<nsRefPtr<TextTrackCue> >& aCues);
100
101 TextTrackReadyState ReadyState() const;
102 void SetReadyState(TextTrackReadyState aState);
103 void SetReadyState(uint32_t aReadyState);
104
105 void AddCue(TextTrackCue& aCue);
106 void RemoveCue(TextTrackCue& aCue, ErrorResult& aRv);
107 void SetDirty() { mDirty = true; }
108 void SetCuesDirty();
109
110 TextTrackList* GetTextTrackList();
111 void SetTextTrackList(TextTrackList* aTextTrackList);
112
113 IMPL_EVENT_HANDLER(cuechange)
114
115 HTMLTrackElement* GetTrackElement();
116 void SetTrackElement(HTMLTrackElement* aTrackElement);
117
118 TextTrackSource GetTextTrackSource() {
119 return mTextTrackSource;
120 }
121
122 private:
123 nsRefPtr<TextTrackList> mTextTrackList;
124
125 TextTrackKind mKind;
126 nsString mLabel;
127 nsString mLanguage;
128 nsString mType;
129 TextTrackMode mMode;
130
131 nsRefPtr<TextTrackCueList> mCueList;
132 nsRefPtr<TextTrackCueList> mActiveCueList;
133 nsRefPtr<HTMLTrackElement> mTrackElement;
134
135 uint32_t mCuePos;
136 TextTrackReadyState mReadyState;
137 bool mDirty;
138
139 // An enum that represents where the track was sourced from.
140 TextTrackSource mTextTrackSource;
141 };
142
143 } // namespace dom
144 } // namespace mozilla
145
146 #endif // mozilla_dom_TextTrack_h

mercurial