Index: media/base/android/media_drm_bridge.cc |
diff --git a/media/base/android/media_drm_bridge.cc b/media/base/android/media_drm_bridge.cc |
index bc35e3617778ff0be7baa39f8012d84322f76b90..d222733572b95ba3d5ad7464fa9cc24a0b0d29be 100644 |
--- a/media/base/android/media_drm_bridge.cc |
+++ b/media/base/android/media_drm_bridge.cc |
@@ -300,6 +300,7 @@ scoped_refptr<MediaDrmBridge> MediaDrmBridge::CreateInternal( |
const std::string& key_system, |
SecurityLevel security_level, |
const CreateFetcherCB& create_fetcher_cb, |
+ const CreateStorageCB& create_storage_cb, |
const SessionMessageCB& session_message_cb, |
const SessionClosedCB& session_closed_cb, |
const SessionKeysChangeCB& session_keys_change_cb, |
@@ -312,8 +313,9 @@ scoped_refptr<MediaDrmBridge> MediaDrmBridge::CreateInternal( |
return nullptr; |
scoped_refptr<MediaDrmBridge> media_drm_bridge(new MediaDrmBridge( |
- scheme_uuid, security_level, create_fetcher_cb, session_message_cb, |
- session_closed_cb, session_keys_change_cb, session_expiration_update_cb)); |
+ scheme_uuid, security_level, create_fetcher_cb, create_storage_cb, |
+ session_message_cb, session_closed_cb, session_keys_change_cb, |
+ session_expiration_update_cb)); |
if (media_drm_bridge->j_media_drm_.is_null()) |
media_drm_bridge = nullptr; |
@@ -326,6 +328,7 @@ scoped_refptr<MediaDrmBridge> MediaDrmBridge::Create( |
const std::string& key_system, |
SecurityLevel security_level, |
const CreateFetcherCB& create_fetcher_cb, |
+ const CreateStorageCB& create_storage_cb, |
const SessionMessageCB& session_message_cb, |
const SessionClosedCB& session_closed_cb, |
const SessionKeysChangeCB& session_keys_change_cb, |
@@ -336,8 +339,9 @@ scoped_refptr<MediaDrmBridge> MediaDrmBridge::Create( |
return nullptr; |
return CreateInternal(key_system, security_level, create_fetcher_cb, |
- session_message_cb, session_closed_cb, |
- session_keys_change_cb, session_expiration_update_cb); |
+ create_storage_cb, session_message_cb, |
+ session_closed_cb, session_keys_change_cb, |
+ session_expiration_update_cb); |
} |
// static |
@@ -351,9 +355,10 @@ scoped_refptr<MediaDrmBridge> MediaDrmBridge::CreateWithoutSessionSupport( |
if (!AreMediaDrmApisAvailable()) |
return nullptr; |
- return MediaDrmBridge::Create( |
- key_system, security_level, create_fetcher_cb, SessionMessageCB(), |
- SessionClosedCB(), SessionKeysChangeCB(), SessionExpirationUpdateCB()); |
+ return MediaDrmBridge::Create(key_system, security_level, create_fetcher_cb, |
+ CreateStorageCB(), SessionMessageCB(), |
+ SessionClosedCB(), SessionKeysChangeCB(), |
+ SessionExpirationUpdateCB()); |
} |
void MediaDrmBridge::SetServerCertificate( |
@@ -760,12 +765,14 @@ MediaDrmBridge::MediaDrmBridge( |
const std::vector<uint8_t>& scheme_uuid, |
SecurityLevel security_level, |
const CreateFetcherCB& create_fetcher_cb, |
+ const CreateStorageCB& create_storage_cb, |
const SessionMessageCB& session_message_cb, |
const SessionClosedCB& session_closed_cb, |
const SessionKeysChangeCB& session_keys_change_cb, |
const SessionExpirationUpdateCB& session_expiration_update_cb) |
: scheme_uuid_(scheme_uuid), |
create_fetcher_cb_(create_fetcher_cb), |
+ create_storage_cb_(create_storage_cb), |
yucliu1
2017/03/23 01:07:16
Just curious, why do want to keep create_storage_c
xhwang
2017/03/23 05:22:06
This is for the "lazy creation" of the storage. Fo
|
session_message_cb_(session_message_cb), |
session_closed_cb_(session_closed_cb), |
session_keys_change_cb_(session_keys_change_cb), |
@@ -787,11 +794,26 @@ MediaDrmBridge::MediaDrmBridge( |
ScopedJavaLocalRef<jstring> j_security_level = |
ConvertUTF8ToJavaString(env, security_level_str); |
+ media_drm_storage_ = create_storage_cb_.Run(); |
+ |
+ // Test code!!! |
+ media_drm_storage_->Initialize( |
+ url::Origin(GURL("https://www.foobar.com:80"))); |
+ media_drm_storage_->OnProvisioned( |
+ base::Bind(&MediaDrmBridge::OnStorageResult, weak_factory_.GetWeakPtr())); |
+ media_drm_storage_->SavePersistentSession( |
+ "fake session id", {1, 2}, "fake mime type", |
+ base::Bind(&MediaDrmBridge::OnStorageResult, weak_factory_.GetWeakPtr())); |
+ |
// Note: OnMediaCryptoReady() could be called in this call. |
j_media_drm_.Reset(Java_MediaDrmBridge_create( |
env, j_scheme_uuid, j_security_level, reinterpret_cast<intptr_t>(this))); |
} |
+void MediaDrmBridge::OnStorageResult(bool success) { |
+ LOG(ERROR) << __func__ << ": " << success; |
+} |
+ |
MediaDrmBridge::~MediaDrmBridge() { |
DCHECK(task_runner_->BelongsToCurrentThread()); |
DVLOG(1) << __func__; |