// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_BLINK_WEBCONTENTDECRYPTIONMODULE_IMPL_H_ #define MEDIA_BLINK_WEBCONTENTDECRYPTIONMODULE_IMPL_H_ #include #include #include #include #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/strings/string16.h" #include "media/base/cdm_config.h" #include "media/blink/media_blink_export.h" #include "third_party/blink/public/platform/web_content_decryption_module.h" #include "third_party/blink/public/platform/web_content_decryption_module_result.h" namespace blink { class WebSecurityOrigin; } namespace media { struct CdmConfig; class CdmContextRef; class CdmFactory; class CdmSessionAdapter; class MEDIA_BLINK_EXPORT WebContentDecryptionModuleImpl : public blink::WebContentDecryptionModule { public: static void Create( CdmFactory* cdm_factory, const base::string16& key_system, const blink::WebSecurityOrigin& security_origin, const CdmConfig& cdm_config, std::unique_ptr result); ~WebContentDecryptionModuleImpl() override; // blink::WebContentDecryptionModule implementation. std::unique_ptr CreateSession() override; void SetServerCertificate( const uint8_t* server_certificate, size_t server_certificate_length, blink::WebContentDecryptionModuleResult result) override; void GetStatusForPolicy( const blink::WebString& min_hdcp_version_string, blink::WebContentDecryptionModuleResult result) override; std::unique_ptr GetCdmContextRef(); std::string GetKeySystem() const; CdmConfig GetCdmConfig() const; private: friend CdmSessionAdapter; // Takes reference to |adapter|. WebContentDecryptionModuleImpl(scoped_refptr adapter); scoped_refptr adapter_; DISALLOW_COPY_AND_ASSIGN(WebContentDecryptionModuleImpl); }; // Allow typecasting from blink type as this is the only implementation. inline WebContentDecryptionModuleImpl* ToWebContentDecryptionModuleImpl( blink::WebContentDecryptionModule* cdm) { return static_cast(cdm); } } // namespace media #endif // MEDIA_BLINK_WEBCONTENTDECRYPTIONMODULE_IMPL_H_