Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Unified Diff: media/base/android/media_drm_storage_bridge.cc

Issue 2823513002: [Clank] Load origin id before create MediaDrmBridge (Closed)
Patch Set: Rebase + Nit Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/android/media_drm_storage_bridge.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « media/base/android/media_drm_storage_bridge.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698