Tue, 06 Jan 2015 21:39:09 +0100
Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.
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/. */
7 #ifndef mozilla_dom_TextTrack_h
8 #define mozilla_dom_TextTrack_h
10 #include "mozilla/DOMEventTargetHelper.h"
11 #include "mozilla/dom/TextTrackBinding.h"
12 #include "nsCOMPtr.h"
13 #include "nsCycleCollectionParticipant.h"
14 #include "nsString.h"
16 namespace mozilla {
17 namespace dom {
19 class TextTrackList;
20 class TextTrackCue;
21 class TextTrackCueList;
22 class TextTrackRegion;
23 class HTMLTrackElement;
25 enum TextTrackSource {
26 Track,
27 AddTextTrack,
28 MediaResourceSpecific
29 };
31 // Constants for numeric readyState property values.
32 enum TextTrackReadyState {
33 NotLoaded = 0U,
34 Loading = 1U,
35 Loaded = 2U,
36 FailedToLoad = 3U
37 };
39 class TextTrack MOZ_FINAL : public DOMEventTargetHelper
40 {
41 public:
42 NS_DECL_ISUPPORTS_INHERITED
43 NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(TextTrack, DOMEventTargetHelper)
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);
61 void SetDefaultSettings();
63 virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
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;
83 TextTrackMode Mode() const
84 {
85 return mMode;
86 }
87 void SetMode(TextTrackMode aValue);
89 TextTrackCueList* GetCues() const
90 {
91 if (mMode == TextTrackMode::Disabled) {
92 return nullptr;
93 }
94 return mCueList;
95 }
97 TextTrackCueList* GetActiveCues();
98 void UpdateActiveCueList();
99 void GetActiveCueArray(nsTArray<nsRefPtr<TextTrackCue> >& aCues);
101 TextTrackReadyState ReadyState() const;
102 void SetReadyState(TextTrackReadyState aState);
103 void SetReadyState(uint32_t aReadyState);
105 void AddCue(TextTrackCue& aCue);
106 void RemoveCue(TextTrackCue& aCue, ErrorResult& aRv);
107 void SetDirty() { mDirty = true; }
108 void SetCuesDirty();
110 TextTrackList* GetTextTrackList();
111 void SetTextTrackList(TextTrackList* aTextTrackList);
113 IMPL_EVENT_HANDLER(cuechange)
115 HTMLTrackElement* GetTrackElement();
116 void SetTrackElement(HTMLTrackElement* aTrackElement);
118 TextTrackSource GetTextTrackSource() {
119 return mTextTrackSource;
120 }
122 private:
123 nsRefPtr<TextTrackList> mTextTrackList;
125 TextTrackKind mKind;
126 nsString mLabel;
127 nsString mLanguage;
128 nsString mType;
129 TextTrackMode mMode;
131 nsRefPtr<TextTrackCueList> mCueList;
132 nsRefPtr<TextTrackCueList> mActiveCueList;
133 nsRefPtr<HTMLTrackElement> mTrackElement;
135 uint32_t mCuePos;
136 TextTrackReadyState mReadyState;
137 bool mDirty;
139 // An enum that represents where the track was sourced from.
140 TextTrackSource mTextTrackSource;
141 };
143 } // namespace dom
144 } // namespace mozilla
146 #endif // mozilla_dom_TextTrack_h