RemoteTextTrackProxy.h [plain text]
#pragma once
#if ENABLE(GPU_PROCESS)
#include "MessageReceiver.h"
#include "TrackPrivateRemoteIdentifier.h"
#include <WebCore/InbandTextTrackPrivate.h>
#include <WebCore/MediaPlayerIdentifier.h>
#include <WebCore/TrackBase.h>
#include <wtf/Ref.h>
namespace IPC {
class Connection;
class Decoder;
}
namespace WebKit {
class GPUConnectionToWebProcess;
struct TextTrackPrivateRemoteConfiguration;
class RemoteTextTrackProxy final
: public ThreadSafeRefCounted<RemoteTextTrackProxy, WTF::DestructionThread::Main>
, private WebCore::InbandTextTrackPrivateClient
, private IPC::MessageReceiver {
public:
static Ref<RemoteTextTrackProxy> create(GPUConnectionToWebProcess& connectionToWebProcess, TrackPrivateRemoteIdentifier identifier, WebCore::InbandTextTrackPrivate& trackPrivate, WebCore::MediaPlayerIdentifier mediaPlayerIdentifier)
{
return adoptRef(*new RemoteTextTrackProxy(connectionToWebProcess, identifier, trackPrivate, mediaPlayerIdentifier));
}
virtual ~RemoteTextTrackProxy();
TrackPrivateRemoteIdentifier identifier() const { return m_identifier; }
private:
RemoteTextTrackProxy(GPUConnectionToWebProcess&, TrackPrivateRemoteIdentifier, WebCore::InbandTextTrackPrivate&, WebCore::MediaPlayerIdentifier);
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;
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
void setMode(WebCore::InbandTextTrackPrivate::Mode mode) { m_trackPrivate->setMode(mode); }
TextTrackPrivateRemoteConfiguration& configuration();
void configurationChanged();
GPUConnectionToWebProcess& m_connectionToWebProcess;
TrackPrivateRemoteIdentifier m_identifier;
Ref<WebCore::InbandTextTrackPrivate> m_trackPrivate;
WebCore::MediaPlayerIdentifier m_mediaPlayerIdentifier;
};
}
#endif // ENABLE(GPU_PROCESS)