Index: media/cdm/cdm_adapter.h |
diff --git a/media/cdm/cdm_adapter.h b/media/cdm/cdm_adapter.h |
index cb08f4a155d62ad63d7e75579be789c323f4e77d..1ecff9e51d7f08d56dc0583fb3f13ce398b4d1a8 100644 |
--- a/media/cdm/cdm_adapter.h |
+++ b/media/cdm/cdm_adapter.h |
@@ -7,9 +7,11 @@ |
#include <stdint.h> |
+#include <memory> |
#include <string> |
#include <vector> |
+#include "base/callback.h" |
#include "base/compiler_specific.h" |
#include "base/files/file_path.h" |
#include "base/macros.h" |
@@ -32,8 +34,17 @@ namespace media { |
class AudioFramesImpl; |
class CdmAllocator; |
+class CdmFileIO; |
class CdmWrapper; |
+// Called when the CDM needs a FileIO object from the host to do file IO |
+// operations. Returns NULL if a FileIO object cannot be obtained. Once a |
+// valid FileIO object is returned, |client| must be valid until |
+// FileIO::Close() is called. The CDM can call this method multiple times |
+// to operate on different files. |
+using CreateCdmFileIOCB = |
+ base::Callback<std::unique_ptr<CdmFileIO>(cdm::FileIOClient* client)>; |
+ |
class MEDIA_EXPORT CdmAdapter : public MediaKeys, |
public CdmContext, |
public Decryptor, |
@@ -42,14 +53,16 @@ class MEDIA_EXPORT CdmAdapter : public MediaKeys, |
public: |
// Create the CDM using |cdm_path| and initialize it using |key_system| and |
// |cdm_config|. |allocator| is to be used whenever the CDM needs memory |
- // and to create VideoFrames. Callbacks will be used for events generated |
- // by the CDM. |cdm_created_cb| will be called when the CDM is loaded and |
- // initialized. |
+ // and to create VideoFrames. |file_io_provider| is to be used whenever the |
+ // CDM needs access to the file system. Callbacks will be used for events |
+ // generated by the CDM. |cdm_created_cb| will be called when the CDM is |
+ // loaded and initialized. |
static void Create( |
const std::string& key_system, |
const base::FilePath& cdm_path, |
const CdmConfig& cdm_config, |
scoped_ptr<CdmAllocator> allocator, |
+ const CreateCdmFileIOCB& create_cdm_file_io_cb, |
const SessionMessageCB& session_message_cb, |
const SessionClosedCB& session_closed_cb, |
const LegacySessionErrorCB& legacy_session_error_cb, |
@@ -149,6 +162,7 @@ class MEDIA_EXPORT CdmAdapter : public MediaKeys, |
CdmAdapter(const std::string& key_system, |
const CdmConfig& cdm_config, |
scoped_ptr<CdmAllocator> allocator, |
+ const CreateCdmFileIOCB& create_cdm_file_io_cb, |
const SessionMessageCB& session_message_cb, |
const SessionClosedCB& session_closed_cb, |
const LegacySessionErrorCB& legacy_session_error_cb, |
@@ -210,6 +224,7 @@ class MEDIA_EXPORT CdmAdapter : public MediaKeys, |
ChannelLayout audio_channel_layout_; |
scoped_ptr<CdmAllocator> allocator_; |
+ CreateCdmFileIOCB create_cdm_file_io_cb_; |
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |