| 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..abfea884dc21a02943d9642705570fc75e8c5588 100644
|
| --- a/media/base/android/media_drm_storage_bridge.cc
|
| +++ b/media/base/android/media_drm_storage_bridge.cc
|
| @@ -33,25 +33,35 @@ 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
|
| + // asynchronously in a callback.
|
| + impl_->Initialize(origin);
|
| + 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 +75,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 +94,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 +109,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 +123,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 +159,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
|
|
|