RemoteMediaSessionHelper.h [plain text]
#pragma once
#if ENABLE(GPU_PROCESS) && PLATFORM(IOS_FAMILY)
#include "GPUProcessConnection.h"
#include "MessageReceiver.h"
#include <WebCore/MediaPlaybackTargetContext.h>
#include <WebCore/MediaSessionHelperIOS.h>
namespace WebKit {
class WebProcess;
class RemoteMediaSessionHelper final
: public WebCore::MediaSessionHelper
, public IPC::MessageReceiver
, public GPUProcessConnection::Client {
public:
RemoteMediaSessionHelper(WebProcess&);
virtual ~RemoteMediaSessionHelper() = default;
IPC::Connection& connection();
using HasAvailableTargets = WebCore::MediaSessionHelperClient::HasAvailableTargets;
using PlayingToAutomotiveHeadUnit = WebCore::MediaSessionHelperClient::PlayingToAutomotiveHeadUnit;
using ShouldPause = WebCore::MediaSessionHelperClient::ShouldPause;
using SupportsAirPlayVideo = WebCore::MediaSessionHelperClient::SupportsAirPlayVideo;
using SuspendedUnderLock = WebCore::MediaSessionHelperClient::SuspendedUnderLock;
private:
void connectToGPUProcess();
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
void gpuProcessConnectionDidClose(GPUProcessConnection&) final;
void startMonitoringWirelessRoutes() final;
void stopMonitoringWirelessRoutes() final;
void providePresentingApplicationPID(int) final;
void applicationWillEnterForeground(SuspendedUnderLock);
void applicationDidEnterBackground(SuspendedUnderLock);
void applicationWillBecomeInactive();
void applicationDidBecomeActive();
void externalOutputDeviceAvailableDidChange(HasAvailableTargets);
void isPlayingToAutomotiveHeadUnitDidChange(PlayingToAutomotiveHeadUnit);
void activeAudioRouteDidChange(ShouldPause);
void activeVideoRouteDidChange(SupportsAirPlayVideo, WebCore::MediaPlaybackTargetContext&&);
WebProcess& m_process;
};
}
#endif