TextTrackPrivateRemote.cpp [plain text]
#include "config.h"
#include "TextTrackPrivateRemote.h"
#if ENABLE(GPU_PROCESS)
#include "Connection.h"
#include "DataReference.h"
#include "MediaPlayerPrivateRemote.h"
#include "RemoteTextTrackProxyMessages.h"
#include <WebCore/NotImplemented.h>
namespace WebKit {
using namespace WebCore;
TextTrackPrivateRemote::TextTrackPrivateRemote(IPC::Connection& connection, TrackPrivateRemoteIdentifier idendifier, TextTrackPrivateRemoteConfiguration&& configuration)
: WebCore::InbandTextTrackPrivate(configuration.cueFormat)
, m_connection(connection)
, m_idendifier(idendifier)
{
updateConfiguration(WTFMove(configuration));
}
void TextTrackPrivateRemote::setMode(TextTrackMode mode)
{
if (mode != m_mode)
m_connection.send(Messages::RemoteTextTrackProxy::SetMode(mode), m_idendifier);
InbandTextTrackPrivate::setMode(mode);
}
void TextTrackPrivateRemote::updateConfiguration(TextTrackPrivateRemoteConfiguration&& configuration)
{
if (configuration.trackId != m_id) {
auto changed = !m_id.isEmpty();
m_id = configuration.trackId;
if (changed && client())
client()->idChanged(m_id);
}
if (configuration.label != m_label) {
auto changed = !m_label.isEmpty();
m_label = configuration.label;
if (changed && client())
client()->labelChanged(m_label);
}
if (configuration.language != m_language) {
auto changed = !m_language.isEmpty();
m_language = configuration.language;
if (changed && client())
client()->languageChanged(m_language);
}
m_trackIndex = configuration.trackIndex;
m_startTimeVariance = configuration.startTimeVariance;
m_format = configuration.cueFormat;
m_kind = configuration.kind;
m_mode = configuration.mode;
m_isClosedCaptions = configuration.isClosedCaptions;
m_isSDH = configuration.isSDH;
m_containsOnlyForcedSubtitles = configuration.containsOnlyForcedSubtitles;
m_isMainProgramContent = configuration.isMainProgramContent;
m_isEasyToRead = configuration.isEasyToRead;
m_isDefault = configuration.isDefault;
}
void TextTrackPrivateRemote::addGenericCue(Ref<InbandGenericCue> cue)
{
ASSERT(client());
if (auto* client = this->client())
client->addGenericCue(cue);
}
void TextTrackPrivateRemote::updateGenericCue(Ref<InbandGenericCue> cue)
{
ASSERT(client());
if (auto* client = this->client())
client->updateGenericCue(cue);
}
void TextTrackPrivateRemote::removeGenericCue(Ref<InbandGenericCue> cue)
{
ASSERT(client());
if (auto* client = this->client())
client->removeGenericCue(cue);
}
void TextTrackPrivateRemote::parseWebVTTFileHeader(String&& header)
{
ASSERT(client());
if (auto* client = this->client())
client->parseWebVTTFileHeader(WTFMove(header));
}
void TextTrackPrivateRemote::parseWebVTTCueData(const IPC::DataReference& data)
{
ASSERT(client());
if (auto* client = this->client())
client->parseWebVTTCueData(reinterpret_cast<const char*>(data.data()), data.size());
}
void TextTrackPrivateRemote::parseWebVTTCueDataStruct(ISOWebVTTCue&& cueData)
{
ASSERT(client());
if (auto* client = this->client())
client->parseWebVTTCueData(WTFMove(cueData));
}
void TextTrackPrivateRemote::addDataCue(MediaTime&& start, MediaTime&& end, IPC::DataReference&& data)
{
ASSERT(client());
if (auto* client = this->client())
client->addDataCue(WTFMove(start), WTFMove(end), reinterpret_cast<const char*>(data.data()), data.size());
}
#if ENABLE(DATACUE_VALUE)
void TextTrackPrivateRemote::addDataCueWithType(MediaTime&& start, MediaTime&& end, SerializedPlatformDataCueValue&& dataValue, String&& type)
{
ASSERT(client());
if (auto* client = this->client())
client->addDataCue(WTFMove(start), WTFMove(end), WebCore::SerializedPlatformDataCue::create(WTFMove(dataValue)), type);
}
void TextTrackPrivateRemote::updateDataCue(MediaTime&& start, MediaTime&& end, SerializedPlatformDataCueValue&& dataValue)
{
ASSERT(client());
if (auto* client = this->client())
client->updateDataCue(WTFMove(start), WTFMove(end), WebCore::SerializedPlatformDataCue::create(WTFMove(dataValue)));
}
void TextTrackPrivateRemote::removeDataCue(MediaTime&& start, MediaTime&& end, SerializedPlatformDataCueValue&& dataValue)
{
ASSERT(client());
if (auto* client = this->client())
client->removeDataCue(WTFMove(start), WTFMove(end), WebCore::SerializedPlatformDataCue::create(WTFMove(dataValue)));
}
#endif
}
#endif // ENABLE(GPU_PROCESS)