InbandGenericTextTrack.h [plain text]
#ifndef InbandGenericTextTrack_h
#define InbandGenericTextTrack_h
#if ENABLE(VIDEO_TRACK)
#include "InbandTextTrack.h"
#include "TextTrackCueGeneric.h"
#include "WebVTTParser.h"
#include <wtf/RefPtr.h>
namespace WebCore {
class Document;
class InbandTextTrackPrivate;
class TextTrackCue;
class GenericTextTrackCueMap final {
public:
GenericTextTrackCueMap();
~GenericTextTrackCueMap();
void add(GenericCueData*, TextTrackCueGeneric*);
void remove(TextTrackCue*);
void remove(GenericCueData*);
PassRefPtr<GenericCueData> find(TextTrackCue*);
PassRefPtr<TextTrackCueGeneric> find(GenericCueData*);
private:
typedef HashMap<RefPtr<TextTrackCue>, RefPtr<GenericCueData>> CueToDataMap;
typedef HashMap<RefPtr<GenericCueData>, RefPtr<TextTrackCueGeneric>> CueDataToCueMap;
CueToDataMap m_cueToDataMap;
CueDataToCueMap m_dataToCueMap;
};
class InbandGenericTextTrack final : public InbandTextTrack, private WebVTTParserClient {
public:
static Ref<InbandGenericTextTrack> create(ScriptExecutionContext*, TextTrackClient*, PassRefPtr<InbandTextTrackPrivate>);
virtual ~InbandGenericTextTrack();
private:
InbandGenericTextTrack(ScriptExecutionContext*, TextTrackClient*, PassRefPtr<InbandTextTrackPrivate>);
virtual void addGenericCue(InbandTextTrackPrivate*, PassRefPtr<GenericCueData>) override;
virtual void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) override;
virtual void removeGenericCue(InbandTextTrackPrivate*, GenericCueData*) override;
virtual void removeCue(TextTrackCue*, ExceptionCode&) override;
PassRefPtr<TextTrackCueGeneric> createCue(PassRefPtr<GenericCueData>);
void updateCueFromCueData(TextTrackCueGeneric*, GenericCueData*);
WebVTTParser& parser();
virtual void parseWebVTTCueData(InbandTextTrackPrivate*, const ISOWebVTTCue&) override;
virtual void parseWebVTTFileHeader(InbandTextTrackPrivate*, String) override;
virtual void newCuesParsed() override;
#if ENABLE(WEBVTT_REGIONS)
virtual void newRegionsParsed() override;
#endif
virtual void fileFailedToParse() override;
GenericTextTrackCueMap m_cueMap;
std::unique_ptr<WebVTTParser> m_webVTTParser;
};
}
#endif
#endif