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