Coverage Report

Created: 2018-09-25 14:53

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