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

Side by Side 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 unified diff | Download patch
« no previous file with comments | « media/base/android/media_drm_storage_bridge.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/base/android/media_drm_storage_bridge.h" 5 #include "media/base/android/media_drm_storage_bridge.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 15 matching lines...) Expand all
26 using base::android::ScopedJavaLocalRef; 26 using base::android::ScopedJavaLocalRef;
27 using base::android::ToJavaByteArray; 27 using base::android::ToJavaByteArray;
28 28
29 namespace media { 29 namespace media {
30 30
31 // static 31 // static
32 bool MediaDrmStorageBridge::RegisterMediaDrmStorageBridge(JNIEnv* env) { 32 bool MediaDrmStorageBridge::RegisterMediaDrmStorageBridge(JNIEnv* env) {
33 return RegisterNativesImpl(env); 33 return RegisterNativesImpl(env);
34 } 34 }
35 35
36 MediaDrmStorageBridge::MediaDrmStorageBridge( 36 MediaDrmStorageBridge::MediaDrmStorageBridge()
37 const url::Origin& origin, 37 : task_runner_(base::ThreadTaskRunnerHandle::Get()), weak_factory_(this) {}
38 const CreateStorageCB& create_storage_cb)
39 : create_storage_cb_(create_storage_cb),
40 origin_(origin),
41 task_runner_(base::ThreadTaskRunnerHandle::Get()),
42 weak_factory_(this) {}
43 38
44 MediaDrmStorageBridge::~MediaDrmStorageBridge() = default; 39 MediaDrmStorageBridge::~MediaDrmStorageBridge() = default;
45 40
41 void MediaDrmStorageBridge::Initialize(const url::Origin& origin,
42 const CreateStorageCB& create_storage_cb,
43 base::OnceClosure on_init) {
44 DCHECK(create_storage_cb);
45 impl_ = create_storage_cb.Run();
46
47 // TODO(yucliu): MediaDrmStorage should generate and return origin id
48 // asynchronously in a callback.
49 impl_->Initialize(origin);
50 origin_id_ = origin.Serialize();
51
52 std::move(on_init).Run();
53 }
54
46 void MediaDrmStorageBridge::OnProvisioned( 55 void MediaDrmStorageBridge::OnProvisioned(
47 JNIEnv* env, 56 JNIEnv* env,
48 const JavaParamRef<jobject>& j_storage, 57 const JavaParamRef<jobject>& j_storage,
49 // Callback<Boolean> 58 // Callback<Boolean>
50 const JavaParamRef<jobject>& j_callback) { 59 const JavaParamRef<jobject>& j_callback) {
60 DCHECK(impl_);
51 task_runner_->PostTask( 61 task_runner_->PostTask(
52 FROM_HERE, 62 FROM_HERE,
53 base::BindOnce( 63 base::BindOnce(
54 &MediaDrmStorage::OnProvisioned, GetStorageImpl()->AsWeakPtr(), 64 &MediaDrmStorage::OnProvisioned, impl_->AsWeakPtr(),
55 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback, 65 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback,
56 // Bind callback to WeakPtr in case callback is called 66 // Bind callback to WeakPtr in case callback is called
57 // after object is deleted. 67 // after object is deleted.
58 weak_factory_.GetWeakPtr(), 68 weak_factory_.GetWeakPtr(),
59 base::Passed(CreateJavaObjectPtr(j_callback.obj()))))); 69 base::Passed(CreateJavaObjectPtr(j_callback.obj())))));
60 } 70 }
61 71
62 void MediaDrmStorageBridge::OnLoadInfo( 72 void MediaDrmStorageBridge::OnLoadInfo(
63 JNIEnv* env, 73 JNIEnv* env,
64 const JavaParamRef<jobject>& j_storage, 74 const JavaParamRef<jobject>& j_storage,
65 const JavaParamRef<jbyteArray>& j_session_id, 75 const JavaParamRef<jbyteArray>& j_session_id,
66 // Callback<PersistentInfo> 76 // Callback<PersistentInfo>
67 const JavaParamRef<jobject>& j_callback) { 77 const JavaParamRef<jobject>& j_callback) {
78 DCHECK(impl_);
68 std::string session_id = JavaBytesToString(env, j_session_id); 79 std::string session_id = JavaBytesToString(env, j_session_id);
69 task_runner_->PostTask( 80 task_runner_->PostTask(
70 FROM_HERE, 81 FROM_HERE,
71 base::BindOnce( 82 base::BindOnce(
72 &MediaDrmStorage::LoadPersistentSession, 83 &MediaDrmStorage::LoadPersistentSession, impl_->AsWeakPtr(),
73 GetStorageImpl()->AsWeakPtr(), session_id, 84 session_id,
74 base::BindOnce(&MediaDrmStorageBridge::OnSessionDataLoaded, 85 base::BindOnce(&MediaDrmStorageBridge::OnSessionDataLoaded,
75 weak_factory_.GetWeakPtr(), 86 weak_factory_.GetWeakPtr(),
76 base::Passed(CreateJavaObjectPtr(j_callback.obj())), 87 base::Passed(CreateJavaObjectPtr(j_callback.obj())),
77 session_id))); 88 session_id)));
78 } 89 }
79 90
80 void MediaDrmStorageBridge::OnSaveInfo( 91 void MediaDrmStorageBridge::OnSaveInfo(
81 JNIEnv* env, 92 JNIEnv* env,
82 const JavaParamRef<jobject>& j_storage, 93 const JavaParamRef<jobject>& j_storage,
83 const JavaParamRef<jobject>& j_persist_info, 94 const JavaParamRef<jobject>& j_persist_info,
84 // Callback<Boolean> 95 // Callback<Boolean>
85 const JavaParamRef<jobject>& j_callback) { 96 const JavaParamRef<jobject>& j_callback) {
97 DCHECK(impl_);
86 std::vector<uint8_t> key_set_id; 98 std::vector<uint8_t> key_set_id;
87 JavaByteArrayToByteVector( 99 JavaByteArrayToByteVector(
88 env, Java_PersistentInfo_keySetId(env, j_persist_info.obj()).obj(), 100 env, Java_PersistentInfo_keySetId(env, j_persist_info.obj()).obj(),
89 &key_set_id); 101 &key_set_id);
90 102
91 std::string mime = ConvertJavaStringToUTF8( 103 std::string mime = ConvertJavaStringToUTF8(
92 env, Java_PersistentInfo_mimeType(env, j_persist_info.obj())); 104 env, Java_PersistentInfo_mimeType(env, j_persist_info.obj()));
93 105
94 std::string session_id = JavaBytesToString( 106 std::string session_id = JavaBytesToString(
95 env, Java_PersistentInfo_emeId(env, j_persist_info.obj()).obj()); 107 env, Java_PersistentInfo_emeId(env, j_persist_info.obj()).obj());
96 108
97 task_runner_->PostTask( 109 task_runner_->PostTask(
98 FROM_HERE, 110 FROM_HERE,
99 base::BindOnce( 111 base::BindOnce(
100 &MediaDrmStorage::SavePersistentSession, 112 &MediaDrmStorage::SavePersistentSession, impl_->AsWeakPtr(),
101 GetStorageImpl()->AsWeakPtr(), session_id, 113 session_id,
102 MediaDrmStorage::SessionData(std::move(key_set_id), std::move(mime)), 114 MediaDrmStorage::SessionData(std::move(key_set_id), std::move(mime)),
103 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback, 115 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback,
104 weak_factory_.GetWeakPtr(), 116 weak_factory_.GetWeakPtr(),
105 base::Passed(CreateJavaObjectPtr(j_callback.obj()))))); 117 base::Passed(CreateJavaObjectPtr(j_callback.obj())))));
106 } 118 }
107 119
108 void MediaDrmStorageBridge::OnClearInfo( 120 void MediaDrmStorageBridge::OnClearInfo(
109 JNIEnv* env, 121 JNIEnv* env,
110 const JavaParamRef<jobject>& j_storage, 122 const JavaParamRef<jobject>& j_storage,
111 const JavaParamRef<jbyteArray>& j_session_id, 123 const JavaParamRef<jbyteArray>& j_session_id,
112 // Callback<Boolean> 124 // Callback<Boolean>
113 const JavaParamRef<jobject>& j_callback) { 125 const JavaParamRef<jobject>& j_callback) {
126 DCHECK(impl_);
114 task_runner_->PostTask( 127 task_runner_->PostTask(
115 FROM_HERE, 128 FROM_HERE,
116 base::BindOnce( 129 base::BindOnce(
117 &MediaDrmStorage::RemovePersistentSession, 130 &MediaDrmStorage::RemovePersistentSession, impl_->AsWeakPtr(),
118 GetStorageImpl()->AsWeakPtr(), JavaBytesToString(env, j_session_id), 131 JavaBytesToString(env, j_session_id),
119 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback, 132 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback,
120 weak_factory_.GetWeakPtr(), 133 weak_factory_.GetWeakPtr(),
121 base::Passed(CreateJavaObjectPtr(j_callback.obj()))))); 134 base::Passed(CreateJavaObjectPtr(j_callback.obj())))));
122 } 135 }
123 136
124 void MediaDrmStorageBridge::RunAndroidBoolCallback(JavaObjectPtr j_callback, 137 void MediaDrmStorageBridge::RunAndroidBoolCallback(JavaObjectPtr j_callback,
125 bool success) { 138 bool success) {
126 RunCallbackAndroid(*j_callback, success); 139 RunCallbackAndroid(*j_callback, success);
127 } 140 }
128 141
(...skipping 10 matching lines...) Expand all
139 ScopedJavaLocalRef<jbyteArray> j_eme_id = StringToJavaBytes(env, session_id); 152 ScopedJavaLocalRef<jbyteArray> j_eme_id = StringToJavaBytes(env, session_id);
140 ScopedJavaLocalRef<jbyteArray> j_key_set_id = ToJavaByteArray( 153 ScopedJavaLocalRef<jbyteArray> j_key_set_id = ToJavaByteArray(
141 env, session_data->key_set_id.data(), session_data->key_set_id.size()); 154 env, session_data->key_set_id.data(), session_data->key_set_id.size());
142 ScopedJavaLocalRef<jstring> j_mime = 155 ScopedJavaLocalRef<jstring> j_mime =
143 ConvertUTF8ToJavaString(env, session_data->mime_type); 156 ConvertUTF8ToJavaString(env, session_data->mime_type);
144 157
145 RunCallbackAndroid(*j_callback, Java_PersistentInfo_create( 158 RunCallbackAndroid(*j_callback, Java_PersistentInfo_create(
146 env, j_eme_id, j_key_set_id, j_mime)); 159 env, j_eme_id, j_key_set_id, j_mime));
147 } 160 }
148 161
149 MediaDrmStorage* MediaDrmStorageBridge::GetStorageImpl() {
150 if (!impl_) {
151 DCHECK(create_storage_cb_);
152 impl_ = std::move(create_storage_cb_).Run();
153 impl_->Initialize(origin_);
154 }
155
156 return impl_.get();
157 }
158
159 } // namespace media 162 } // namespace media
OLDNEW
« 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