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