RemoteTextTrackProxy.h [plain text]
#pragma once
#if ENABLE(GPU_PROCESS)
#include "TrackPrivateRemoteIdentifier.h"
#include <WebCore/InbandTextTrackPrivate.h>
#include <WebCore/TrackBase.h>
namespace IPC {
class Connection;
}
namespace WebKit {
class RemoteMediaPlayerProxy;
struct TextTrackPrivateRemoteConfiguration;
class RemoteTextTrackProxy final
: public ThreadSafeRefCounted<RemoteTextTrackProxy, WTF::DestructionThread::Main>
, private WebCore::InbandTextTrackPrivateClient {
public:
static Ref<RemoteTextTrackProxy> create(RemoteMediaPlayerProxy& player, TrackPrivateRemoteIdentifier id, Ref<IPC::Connection>&& connection, WebCore::InbandTextTrackPrivate& trackPrivate)
{
return adoptRef(*new RemoteTextTrackProxy(player, id, WTFMove(connection), trackPrivate));
}
TrackPrivateRemoteIdentifier identifier() const { return m_identifier; };
void setMode(WebCore::InbandTextTrackPrivate::Mode mode) { m_trackPrivate->setMode(mode); }
private:
RemoteTextTrackProxy(RemoteMediaPlayerProxy&, TrackPrivateRemoteIdentifier, Ref<IPC::Connection>&&, WebCore::InbandTextTrackPrivate&);
virtual void addDataCue(const MediaTime& start, const MediaTime& end, const void*, unsigned);
#if ENABLE(DATACUE_VALUE)
virtual void addDataCue(const MediaTime& start, const MediaTime& end, Ref<WebCore::SerializedPlatformDataCue>&&, const String&);
virtual void updateDataCue(const MediaTime& start, const MediaTime& end, WebCore::SerializedPlatformDataCue&);
virtual void removeDataCue(const MediaTime& start, const MediaTime& end, WebCore::SerializedPlatformDataCue&);
#endif
virtual void addGenericCue(WebCore::InbandGenericCue&);
virtual void updateGenericCue(WebCore::InbandGenericCue&);
virtual void removeGenericCue(WebCore::InbandGenericCue&);
virtual void parseWebVTTFileHeader(String&&);
virtual void parseWebVTTCueData(const char* data, unsigned length);
virtual void parseWebVTTCueData(WebCore::ISOWebVTTCue&&);
void idChanged(const AtomString&) final;
void labelChanged(const AtomString&) final;
void languageChanged(const AtomString&) final;
void willRemove() final;
TextTrackPrivateRemoteConfiguration& configuration();
void configurationChanged();
RemoteMediaPlayerProxy& m_player;
TrackPrivateRemoteIdentifier m_identifier;
Ref<IPC::Connection> m_webProcessConnection;
Ref<WebCore::InbandTextTrackPrivate> m_trackPrivate;
};
}
#endif // ENABLE(GPU_PROCESS)