#pragma once
#if ENABLE(ENCRYPTED_MEDIA)
#include "CDMInstance.h"
#include "CDMRequirement.h"
#include "CDMSessionType.h"
#include <wtf/Forward.h>
namespace WebCore {
struct CDMKeySystemConfiguration;
struct CDMRestrictions;
class CDMPrivate {
public:
virtual ~CDMPrivate() = default;
virtual bool supportsInitDataType(const AtomicString&) const = 0;
virtual bool supportsConfiguration(const CDMKeySystemConfiguration&) const = 0;
virtual bool supportsConfigurationWithRestrictions(const CDMKeySystemConfiguration&, const CDMRestrictions&) const = 0;
virtual bool supportsSessionTypeWithConfiguration(CDMSessionType&, const CDMKeySystemConfiguration&) const = 0;
virtual bool supportsRobustness(const String&) const = 0;
virtual CDMRequirement distinctiveIdentifiersRequirement(const CDMKeySystemConfiguration&, const CDMRestrictions&) const = 0;
virtual CDMRequirement persistentStateRequirement(const CDMKeySystemConfiguration&, const CDMRestrictions&) const = 0;
virtual bool distinctiveIdentifiersAreUniquePerOriginAndClearable(const CDMKeySystemConfiguration&) const = 0;
virtual RefPtr<CDMInstance> createInstance() = 0;
virtual void loadAndInitialize() = 0;
virtual bool supportsServerCertificates() const = 0;
virtual bool supportsSessions() const = 0;
virtual bool supportsInitData(const AtomicString&, const SharedBuffer&) const = 0;
virtual RefPtr<SharedBuffer> sanitizeResponse(const SharedBuffer&) const = 0;
virtual Optional<String> sanitizeSessionId(const String&) const = 0;
};
}
#endif