MockCDMFactory.cpp [plain text]
#include "config.h"
#include "MockCDMFactory.h"
#if ENABLE(ENCRYPTED_MEDIA)
#include <wtf/NeverDestroyed.h>
namespace WebCore {
MockCDMFactory::MockCDMFactory()
: m_weakPtrFactory(this)
{
CDM::registerCDMFactory(*this);
}
MockCDMFactory::~MockCDMFactory()
{
unregister();
}
void MockCDMFactory::unregister()
{
if (m_registered) {
CDM::unregisterCDMFactory(*this);
m_registered = false;
}
}
bool MockCDMFactory::supportsKeySystem(const String& keySystem)
{
return equalIgnoringASCIICase(keySystem, "org.webkit.mock");
}
std::unique_ptr<CDMPrivate> MockCDMFactory::createCDM(CDM&)
{
return std::make_unique<MockCDM>(m_weakPtrFactory.createWeakPtr());
}
MockCDM::MockCDM(WeakPtr<MockCDMFactory> factory)
: m_factory(WTFMove(factory))
{
}
bool MockCDM::supportsInitDataType(const String& initDataType)
{
if (m_factory)
return m_factory->supportedDataTypes().contains(initDataType);
return false;
}
bool MockCDM::supportsConfiguration(const MediaKeySystemConfiguration&)
{
return true;
}
bool MockCDM::supportsConfigurationWithRestrictions(const MediaKeySystemConfiguration&, const MediaKeysRestrictions&)
{
return true;
}
bool MockCDM::supportsSessionTypeWithConfiguration(MediaKeySessionType&, const MediaKeySystemConfiguration&)
{
return true;
}
bool MockCDM::supportsRobustness(const String& robustness)
{
if (m_factory)
return m_factory->supportedRobustness().contains(robustness);
return false;
}
MediaKeysRequirement MockCDM::distinctiveIdentifiersRequirement(const MediaKeySystemConfiguration&, const MediaKeysRestrictions&)
{
if (m_factory)
return m_factory->distinctiveIdentifiersRequirement();
return MediaKeysRequirement::Optional;
}
MediaKeysRequirement MockCDM::persistentStateRequirement(const MediaKeySystemConfiguration&, const MediaKeysRestrictions&)
{
if (m_factory)
return m_factory->persistentStateRequirement();
return MediaKeysRequirement::Optional;
}
bool MockCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable(const MediaKeySystemConfiguration&)
{
return true;
}
}
#endif