Chromium Code Reviews| Index: media/base/android/media_drm_storage_bridge.cc |
| diff --git a/media/base/android/media_drm_storage_bridge.cc b/media/base/android/media_drm_storage_bridge.cc |
| index 8640ed607e3679a41d692b8065309e96182bc114..526bdb4e2ae6f49a5e5b8814e7a83a1fedfd5016 100644 |
| --- a/media/base/android/media_drm_storage_bridge.cc |
| +++ b/media/base/android/media_drm_storage_bridge.cc |
| @@ -33,25 +33,34 @@ bool MediaDrmStorageBridge::RegisterMediaDrmStorageBridge(JNIEnv* env) { |
| return RegisterNativesImpl(env); |
| } |
| -MediaDrmStorageBridge::MediaDrmStorageBridge( |
| - const url::Origin& origin, |
| - const CreateStorageCB& create_storage_cb) |
| - : create_storage_cb_(create_storage_cb), |
| - origin_(origin), |
| - task_runner_(base::ThreadTaskRunnerHandle::Get()), |
| - weak_factory_(this) {} |
| +MediaDrmStorageBridge::MediaDrmStorageBridge() |
| + : task_runner_(base::ThreadTaskRunnerHandle::Get()), weak_factory_(this) {} |
| MediaDrmStorageBridge::~MediaDrmStorageBridge() = default; |
| +void MediaDrmStorageBridge::Initialize(const url::Origin& origin, |
| + const CreateStorageCB& create_storage_cb, |
| + base::OnceClosure on_init) { |
| + DCHECK(create_storage_cb); |
| + impl_ = create_storage_cb.Run(); |
| + |
| + // TODO(yucliu): MediaDrmStorage should generate and return origin id. |
| + impl_->Initialize(origin); |
|
xhwang
2017/05/03 06:00:56
Initalize() should be a method that takes a callba
yucliu1
2017/05/03 06:33:49
Yes, I mean "return origin id asynchronously in a
|
| + origin_id_ = origin.Serialize(); |
| + |
| + std::move(on_init).Run(); |
| +} |
| + |
| void MediaDrmStorageBridge::OnProvisioned( |
| JNIEnv* env, |
| const JavaParamRef<jobject>& j_storage, |
| // Callback<Boolean> |
| const JavaParamRef<jobject>& j_callback) { |
| + DCHECK(impl_); |
| task_runner_->PostTask( |
| FROM_HERE, |
| base::BindOnce( |
| - &MediaDrmStorage::OnProvisioned, GetStorageImpl()->AsWeakPtr(), |
| + &MediaDrmStorage::OnProvisioned, impl_->AsWeakPtr(), |
| base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback, |
| // Bind callback to WeakPtr in case callback is called |
| // after object is deleted. |
| @@ -65,12 +74,13 @@ void MediaDrmStorageBridge::OnLoadInfo( |
| const JavaParamRef<jbyteArray>& j_session_id, |
| // Callback<PersistentInfo> |
| const JavaParamRef<jobject>& j_callback) { |
| + DCHECK(impl_); |
| std::string session_id = JavaBytesToString(env, j_session_id); |
| task_runner_->PostTask( |
| FROM_HERE, |
| base::BindOnce( |
| - &MediaDrmStorage::LoadPersistentSession, |
| - GetStorageImpl()->AsWeakPtr(), session_id, |
| + &MediaDrmStorage::LoadPersistentSession, impl_->AsWeakPtr(), |
| + session_id, |
| base::BindOnce(&MediaDrmStorageBridge::OnSessionDataLoaded, |
| weak_factory_.GetWeakPtr(), |
| base::Passed(CreateJavaObjectPtr(j_callback.obj())), |
| @@ -83,6 +93,7 @@ void MediaDrmStorageBridge::OnSaveInfo( |
| const JavaParamRef<jobject>& j_persist_info, |
| // Callback<Boolean> |
| const JavaParamRef<jobject>& j_callback) { |
| + DCHECK(impl_); |
| std::vector<uint8_t> key_set_id; |
| JavaByteArrayToByteVector( |
| env, Java_PersistentInfo_keySetId(env, j_persist_info.obj()).obj(), |
| @@ -97,8 +108,8 @@ void MediaDrmStorageBridge::OnSaveInfo( |
| task_runner_->PostTask( |
| FROM_HERE, |
| base::BindOnce( |
| - &MediaDrmStorage::SavePersistentSession, |
| - GetStorageImpl()->AsWeakPtr(), session_id, |
| + &MediaDrmStorage::SavePersistentSession, impl_->AsWeakPtr(), |
| + session_id, |
| MediaDrmStorage::SessionData(std::move(key_set_id), std::move(mime)), |
| base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback, |
| weak_factory_.GetWeakPtr(), |
| @@ -111,11 +122,12 @@ void MediaDrmStorageBridge::OnClearInfo( |
| const JavaParamRef<jbyteArray>& j_session_id, |
| // Callback<Boolean> |
| const JavaParamRef<jobject>& j_callback) { |
| + DCHECK(impl_); |
| task_runner_->PostTask( |
| FROM_HERE, |
| base::BindOnce( |
| - &MediaDrmStorage::RemovePersistentSession, |
| - GetStorageImpl()->AsWeakPtr(), JavaBytesToString(env, j_session_id), |
| + &MediaDrmStorage::RemovePersistentSession, impl_->AsWeakPtr(), |
| + JavaBytesToString(env, j_session_id), |
| base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback, |
| weak_factory_.GetWeakPtr(), |
| base::Passed(CreateJavaObjectPtr(j_callback.obj()))))); |
| @@ -146,14 +158,4 @@ void MediaDrmStorageBridge::OnSessionDataLoaded( |
| env, j_eme_id, j_key_set_id, j_mime)); |
| } |
| -MediaDrmStorage* MediaDrmStorageBridge::GetStorageImpl() { |
| - if (!impl_) { |
| - DCHECK(create_storage_cb_); |
| - impl_ = std::move(create_storage_cb_).Run(); |
| - impl_->Initialize(origin_); |
| - } |
| - |
| - return impl_.get(); |
| -} |
| - |
| } // namespace media |