michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* vim:set ts=2 sw=2 et tw=78: */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef mozilla_dom_TextTrack_h michael@0: #define mozilla_dom_TextTrack_h michael@0: michael@0: #include "mozilla/DOMEventTargetHelper.h" michael@0: #include "mozilla/dom/TextTrackBinding.h" michael@0: #include "nsCOMPtr.h" michael@0: #include "nsCycleCollectionParticipant.h" michael@0: #include "nsString.h" michael@0: michael@0: namespace mozilla { michael@0: namespace dom { michael@0: michael@0: class TextTrackList; michael@0: class TextTrackCue; michael@0: class TextTrackCueList; michael@0: class TextTrackRegion; michael@0: class HTMLTrackElement; michael@0: michael@0: enum TextTrackSource { michael@0: Track, michael@0: AddTextTrack, michael@0: MediaResourceSpecific michael@0: }; michael@0: michael@0: // Constants for numeric readyState property values. michael@0: enum TextTrackReadyState { michael@0: NotLoaded = 0U, michael@0: Loading = 1U, michael@0: Loaded = 2U, michael@0: FailedToLoad = 3U michael@0: }; michael@0: michael@0: class TextTrack MOZ_FINAL : public DOMEventTargetHelper michael@0: { michael@0: public: michael@0: NS_DECL_ISUPPORTS_INHERITED michael@0: NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(TextTrack, DOMEventTargetHelper) michael@0: michael@0: TextTrack(nsPIDOMWindow* aOwnerWindow, michael@0: TextTrackKind aKind, michael@0: const nsAString& aLabel, michael@0: const nsAString& aLanguage, michael@0: TextTrackMode aMode, michael@0: TextTrackReadyState aReadyState, michael@0: TextTrackSource aTextTrackSource); michael@0: TextTrack(nsPIDOMWindow* aOwnerWindow, michael@0: TextTrackList* aTextTrackList, michael@0: TextTrackKind aKind, michael@0: const nsAString& aLabel, michael@0: const nsAString& aLanguage, michael@0: TextTrackMode aMode, michael@0: TextTrackReadyState aReadyState, michael@0: TextTrackSource aTextTrackSource); michael@0: michael@0: void SetDefaultSettings(); michael@0: michael@0: virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE; michael@0: michael@0: TextTrackKind Kind() const michael@0: { michael@0: return mKind; michael@0: } michael@0: void GetLabel(nsAString& aLabel) const michael@0: { michael@0: aLabel = mLabel; michael@0: } michael@0: void GetLanguage(nsAString& aLanguage) const michael@0: { michael@0: aLanguage = mLanguage; michael@0: } michael@0: void GetInBandMetadataTrackDispatchType(nsAString& aType) const michael@0: { michael@0: aType = mType; michael@0: } michael@0: void GetId(nsAString& aId) const; michael@0: michael@0: TextTrackMode Mode() const michael@0: { michael@0: return mMode; michael@0: } michael@0: void SetMode(TextTrackMode aValue); michael@0: michael@0: TextTrackCueList* GetCues() const michael@0: { michael@0: if (mMode == TextTrackMode::Disabled) { michael@0: return nullptr; michael@0: } michael@0: return mCueList; michael@0: } michael@0: michael@0: TextTrackCueList* GetActiveCues(); michael@0: void UpdateActiveCueList(); michael@0: void GetActiveCueArray(nsTArray >& aCues); michael@0: michael@0: TextTrackReadyState ReadyState() const; michael@0: void SetReadyState(TextTrackReadyState aState); michael@0: void SetReadyState(uint32_t aReadyState); michael@0: michael@0: void AddCue(TextTrackCue& aCue); michael@0: void RemoveCue(TextTrackCue& aCue, ErrorResult& aRv); michael@0: void SetDirty() { mDirty = true; } michael@0: void SetCuesDirty(); michael@0: michael@0: TextTrackList* GetTextTrackList(); michael@0: void SetTextTrackList(TextTrackList* aTextTrackList); michael@0: michael@0: IMPL_EVENT_HANDLER(cuechange) michael@0: michael@0: HTMLTrackElement* GetTrackElement(); michael@0: void SetTrackElement(HTMLTrackElement* aTrackElement); michael@0: michael@0: TextTrackSource GetTextTrackSource() { michael@0: return mTextTrackSource; michael@0: } michael@0: michael@0: private: michael@0: nsRefPtr mTextTrackList; michael@0: michael@0: TextTrackKind mKind; michael@0: nsString mLabel; michael@0: nsString mLanguage; michael@0: nsString mType; michael@0: TextTrackMode mMode; michael@0: michael@0: nsRefPtr mCueList; michael@0: nsRefPtr mActiveCueList; michael@0: nsRefPtr mTrackElement; michael@0: michael@0: uint32_t mCuePos; michael@0: TextTrackReadyState mReadyState; michael@0: bool mDirty; michael@0: michael@0: // An enum that represents where the track was sourced from. michael@0: TextTrackSource mTextTrackSource; michael@0: }; michael@0: michael@0: } // namespace dom michael@0: } // namespace mozilla michael@0: michael@0: #endif // mozilla_dom_TextTrack_h