Chromium Code Reviews| 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__; |