CDMFairPlayStreaming.h [plain text]
#pragma once
#if ENABLE(ENCRYPTED_MEDIA)
#include "CDMFactory.h"
#include "CDMPrivate.h"
namespace WebCore {
struct FourCC;
class CDMFactoryFairPlayStreaming final : public CDMFactory {
WTF_MAKE_FAST_ALLOCATED;
public:
static CDMFactoryFairPlayStreaming& singleton();
virtual ~CDMFactoryFairPlayStreaming();
std::unique_ptr<CDMPrivate> createCDM(const String&) override;
bool supportsKeySystem(const String&) override;
private:
friend class NeverDestroyed<CDMFactoryFairPlayStreaming>;
CDMFactoryFairPlayStreaming();
};
class CDMPrivateFairPlayStreaming final : public CDMPrivate {
WTF_MAKE_FAST_ALLOCATED;
public:
CDMPrivateFairPlayStreaming();
virtual ~CDMPrivateFairPlayStreaming();
#if !RELEASE_LOG_DISABLED
void setLogger(WTF::Logger&, const void* logIdentifier) final;
#endif
Vector<AtomString> supportedInitDataTypes() const override;
bool supportsConfiguration(const CDMKeySystemConfiguration&) const override;
bool supportsConfigurationWithRestrictions(const CDMKeySystemConfiguration&, const CDMRestrictions&) const override;
bool supportsSessionTypeWithConfiguration(const CDMSessionType&, const CDMKeySystemConfiguration&) const override;
Vector<AtomString> supportedRobustnesses() const override;
CDMRequirement distinctiveIdentifiersRequirement(const CDMKeySystemConfiguration&, const CDMRestrictions&) const override;
CDMRequirement persistentStateRequirement(const CDMKeySystemConfiguration&, const CDMRestrictions&) const override;
bool distinctiveIdentifiersAreUniquePerOriginAndClearable(const CDMKeySystemConfiguration&) const override;
RefPtr<CDMInstance> createInstance() override;
void loadAndInitialize() override;
bool supportsServerCertificates() const override;
bool supportsSessions() const override;
bool supportsInitData(const AtomString&, const SharedBuffer&) const override;
RefPtr<SharedBuffer> sanitizeResponse(const SharedBuffer&) const override;
Optional<String> sanitizeSessionId(const String&) const override;
static const AtomString& sinfName();
static Optional<Vector<Ref<SharedBuffer>>> extractKeyIDsSinf(const SharedBuffer&);
static RefPtr<SharedBuffer> sanitizeSinf(const SharedBuffer&);
static const AtomString& skdName();
static Optional<Vector<Ref<SharedBuffer>>> extractKeyIDsSkd(const SharedBuffer&);
static RefPtr<SharedBuffer> sanitizeSkd(const SharedBuffer&);
static const Vector<FourCC>& validFairPlayStreamingSchemes();
private:
#if !RELEASE_LOG_DISABLED
WTF::Logger* loggerPtr() const { return m_logger.get(); };
const void* logIdentifier() const { return m_logIdentifier; }
const char* logClassName() const { return "CDMPrivateFairPlayStreaming"; }
RefPtr<WTF::Logger> m_logger;
const void* m_logIdentifier;
#endif
};
}
#endif // ENABLE(ENCRYPTED_MEDIA)