mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
7141a09f73
- Active cues now returns the subset of cues in mCueList that are valid for the current playback time. - Introduces new code in media element, when seeking, and in TextTrack, when adding and removing cues, to mark the active cue list as dirty so that we know when we might need to rebuild the list completely.
131 lines
2.9 KiB
C++
131 lines
2.9 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim:set ts=2 sw=2 et tw=78: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef mozilla_dom_TextTrack_h
|
|
#define mozilla_dom_TextTrack_h
|
|
|
|
#include "mozilla/dom/TextTrackBinding.h"
|
|
#include "nsCOMPtr.h"
|
|
#include "nsCycleCollectionParticipant.h"
|
|
#include "nsDOMEventTargetHelper.h"
|
|
#include "nsString.h"
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
class TextTrackCue;
|
|
class TextTrackCueList;
|
|
class TextTrackRegion;
|
|
class TextTrackRegionList;
|
|
class HTMLMediaElement;
|
|
|
|
class TextTrack MOZ_FINAL : public nsDOMEventTargetHelper
|
|
{
|
|
public:
|
|
NS_DECL_ISUPPORTS_INHERITED
|
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(TextTrack, nsDOMEventTargetHelper)
|
|
|
|
TextTrack(nsISupports* aParent);
|
|
TextTrack(nsISupports* aParent,
|
|
HTMLMediaElement* aMediaElement);
|
|
TextTrack(nsISupports* aParent,
|
|
HTMLMediaElement* aMediaElement,
|
|
TextTrackKind aKind,
|
|
const nsAString& aLabel,
|
|
const nsAString& aLanguage);
|
|
|
|
void SetDefaultSettings();
|
|
|
|
virtual JSObject* WrapObject(JSContext* aCx,
|
|
JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
|
|
|
|
nsISupports* GetParentObject() const
|
|
{
|
|
return mParent;
|
|
}
|
|
|
|
TextTrackKind Kind() const
|
|
{
|
|
return mKind;
|
|
}
|
|
void GetLabel(nsAString& aLabel) const
|
|
{
|
|
aLabel = mLabel;
|
|
}
|
|
void GetLanguage(nsAString& aLanguage) const
|
|
{
|
|
aLanguage = mLanguage;
|
|
}
|
|
void GetInBandMetadataTrackDispatchType(nsAString& aType) const
|
|
{
|
|
aType = mType;
|
|
}
|
|
void GetId(nsAString& aId) const
|
|
{
|
|
aId = mId;
|
|
}
|
|
|
|
TextTrackMode Mode() const
|
|
{
|
|
return mMode;
|
|
}
|
|
void SetMode(TextTrackMode aValue);
|
|
|
|
TextTrackCueList* GetCues() const
|
|
{
|
|
if (mMode == TextTrackMode::Disabled) {
|
|
return nullptr;
|
|
}
|
|
return mCueList;
|
|
}
|
|
|
|
TextTrackCueList* GetActiveCues();
|
|
|
|
TextTrackRegionList* GetRegions() const
|
|
{
|
|
if (mMode != TextTrackMode::Disabled) {
|
|
return mRegionList;
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
void AddRegion(TextTrackRegion& aRegion);
|
|
void RemoveRegion(const TextTrackRegion& aRegion, ErrorResult& aRv);
|
|
|
|
// Time is in seconds.
|
|
void Update(double aTime);
|
|
|
|
void AddCue(TextTrackCue& aCue);
|
|
void RemoveCue(TextTrackCue& aCue, ErrorResult& aRv);
|
|
void CueChanged(TextTrackCue& aCue);
|
|
void SetDirty() { mDirty = true; }
|
|
|
|
IMPL_EVENT_HANDLER(cuechange)
|
|
|
|
private:
|
|
nsCOMPtr<nsISupports> mParent;
|
|
nsRefPtr<HTMLMediaElement> mMediaElement;
|
|
|
|
TextTrackKind mKind;
|
|
nsString mLabel;
|
|
nsString mLanguage;
|
|
nsString mType;
|
|
nsString mId;
|
|
TextTrackMode mMode;
|
|
|
|
nsRefPtr<TextTrackCueList> mCueList;
|
|
nsRefPtr<TextTrackCueList> mActiveCueList;
|
|
nsRefPtr<TextTrackRegionList> mRegionList;
|
|
|
|
uint32_t mCuePos;
|
|
bool mDirty;
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_dom_TextTrack_h
|