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

Side by Side Diff: media/base/android/media_drm_storage_bridge.cc

Issue 2823513002: [Clank] Load origin id before create MediaDrmBridge (Closed)
Patch Set: Test Created 3 years, 8 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
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 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
49 origin_id_ = origin.Serialize();
50
51 std::move(on_init).Run();
52 }
53
46 void MediaDrmStorageBridge::OnProvisioned( 54 void MediaDrmStorageBridge::OnProvisioned(
47 JNIEnv* env, 55 JNIEnv* env,
48 const JavaParamRef<jobject>& j_storage, 56 const JavaParamRef<jobject>& j_storage,
49 // Callback<Boolean> 57 // Callback<Boolean>
50 const JavaParamRef<jobject>& j_callback) { 58 const JavaParamRef<jobject>& j_callback) {
59 DCHECK(impl_);
51 task_runner_->PostTask( 60 task_runner_->PostTask(
52 FROM_HERE, 61 FROM_HERE,
53 base::BindOnce( 62 base::BindOnce(
54 &MediaDrmStorage::OnProvisioned, GetStorageImpl()->AsWeakPtr(), 63 &MediaDrmStorage::OnProvisioned, impl_->AsWeakPtr(),
55 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback, 64 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback,
56 // Bind callback to WeakPtr in case callback is called 65 // Bind callback to WeakPtr in case callback is called
57 // after object is deleted. 66 // after object is deleted.
58 weak_factory_.GetWeakPtr(), 67 weak_factory_.GetWeakPtr(),
59 base::Passed(CreateJavaObjectPtr(j_callback.obj()))))); 68 base::Passed(CreateJavaObjectPtr(j_callback.obj())))));
60 } 69 }
61 70
62 void MediaDrmStorageBridge::OnLoadInfo( 71 void MediaDrmStorageBridge::OnLoadInfo(
63 JNIEnv* env, 72 JNIEnv* env,
64 const JavaParamRef<jobject>& j_storage, 73 const JavaParamRef<jobject>& j_storage,
65 const JavaParamRef<jbyteArray>& j_session_id, 74 const JavaParamRef<jbyteArray>& j_session_id,
66 // Callback<PersistentInfo> 75 // Callback<PersistentInfo>
67 const JavaParamRef<jobject>& j_callback) { 76 const JavaParamRef<jobject>& j_callback) {
77 DCHECK(impl_);
68 std::string session_id = JavaBytesToString(env, j_session_id); 78 std::string session_id = JavaBytesToString(env, j_session_id);
69 task_runner_->PostTask( 79 task_runner_->PostTask(
70 FROM_HERE, 80 FROM_HERE,
71 base::BindOnce( 81 base::BindOnce(
72 &MediaDrmStorage::LoadPersistentSession, 82 &MediaDrmStorage::LoadPersistentSession, impl_->AsWeakPtr(),
73 GetStorageImpl()->AsWeakPtr(), session_id, 83 session_id,
74 base::BindOnce(&MediaDrmStorageBridge::OnSessionDataLoaded, 84 base::BindOnce(&MediaDrmStorageBridge::OnSessionDataLoaded,
75 weak_factory_.GetWeakPtr(), 85 weak_factory_.GetWeakPtr(),
76 base::Passed(CreateJavaObjectPtr(j_callback.obj())), 86 base::Passed(CreateJavaObjectPtr(j_callback.obj())),
77 session_id))); 87 session_id)));
78 } 88 }
79 89
80 void MediaDrmStorageBridge::OnSaveInfo( 90 void MediaDrmStorageBridge::OnSaveInfo(
81 JNIEnv* env, 91 JNIEnv* env,
82 const JavaParamRef<jobject>& j_storage, 92 const JavaParamRef<jobject>& j_storage,
83 const JavaParamRef<jobject>& j_persist_info, 93 const JavaParamRef<jobject>& j_persist_info,
84 // Callback<Boolean> 94 // Callback<Boolean>
85 const JavaParamRef<jobject>& j_callback) { 95 const JavaParamRef<jobject>& j_callback) {
96 DCHECK(impl_);
86 std::vector<uint8_t> key_set_id; 97 std::vector<uint8_t> key_set_id;
87 JavaByteArrayToByteVector( 98 JavaByteArrayToByteVector(
88 env, Java_PersistentInfo_keySetId(env, j_persist_info.obj()).obj(), 99 env, Java_PersistentInfo_keySetId(env, j_persist_info.obj()).obj(),
89 &key_set_id); 100 &key_set_id);
90 101
91 std::string mime = ConvertJavaStringToUTF8( 102 std::string mime = ConvertJavaStringToUTF8(
92 env, Java_PersistentInfo_mimeType(env, j_persist_info.obj())); 103 env, Java_PersistentInfo_mimeType(env, j_persist_info.obj()));
93 104
94 std::string session_id = JavaBytesToString( 105 std::string session_id = JavaBytesToString(
95 env, Java_PersistentInfo_emeId(env, j_persist_info.obj()).obj()); 106 env, Java_PersistentInfo_emeId(env, j_persist_info.obj()).obj());
96 107
97 task_runner_->PostTask( 108 task_runner_->PostTask(
98 FROM_HERE, 109 FROM_HERE,
99 base::BindOnce( 110 base::BindOnce(
100 &MediaDrmStorage::SavePersistentSession, 111 &MediaDrmStorage::SavePersistentSession, impl_->AsWeakPtr(),
101 GetStorageImpl()->AsWeakPtr(), session_id, 112 session_id,
102 MediaDrmStorage::SessionData(std::move(key_set_id), std::move(mime)), 113 MediaDrmStorage::SessionData(std::move(key_set_id), std::move(mime)),
103 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback, 114 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback,
104 weak_factory_.GetWeakPtr(), 115 weak_factory_.GetWeakPtr(),
105 base::Passed(CreateJavaObjectPtr(j_callback.obj()))))); 116 base::Passed(CreateJavaObjectPtr(j_callback.obj())))));
106 } 117 }
107 118
108 void MediaDrmStorageBridge::OnClearInfo( 119 void MediaDrmStorageBridge::OnClearInfo(
109 JNIEnv* env, 120 JNIEnv* env,
110 const JavaParamRef<jobject>& j_storage, 121 const JavaParamRef<jobject>& j_storage,
111 const JavaParamRef<jbyteArray>& j_session_id, 122 const JavaParamRef<jbyteArray>& j_session_id,
112 // Callback<Boolean> 123 // Callback<Boolean>
113 const JavaParamRef<jobject>& j_callback) { 124 const JavaParamRef<jobject>& j_callback) {
125 DCHECK(impl_);
114 task_runner_->PostTask( 126 task_runner_->PostTask(
115 FROM_HERE, 127 FROM_HERE,
116 base::BindOnce( 128 base::BindOnce(
117 &MediaDrmStorage::RemovePersistentSession, 129 &MediaDrmStorage::RemovePersistentSession, impl_->AsWeakPtr(),
118 GetStorageImpl()->AsWeakPtr(), JavaBytesToString(env, j_session_id), 130 JavaBytesToString(env, j_session_id),
119 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback, 131 base::BindOnce(&MediaDrmStorageBridge::RunAndroidBoolCallback,
120 weak_factory_.GetWeakPtr(), 132 weak_factory_.GetWeakPtr(),
121 base::Passed(CreateJavaObjectPtr(j_callback.obj()))))); 133 base::Passed(CreateJavaObjectPtr(j_callback.obj())))));
122 } 134 }
123 135
124 void MediaDrmStorageBridge::RunAndroidBoolCallback(JavaObjectPtr j_callback, 136 void MediaDrmStorageBridge::RunAndroidBoolCallback(JavaObjectPtr j_callback,
125 bool success) { 137 bool success) {
126 RunCallbackAndroid(*j_callback, success); 138 RunCallbackAndroid(*j_callback, success);
127 } 139 }
128 140
(...skipping 10 matching lines...) Expand all
139 ScopedJavaLocalRef<jbyteArray> j_eme_id = StringToJavaBytes(env, session_id); 151 ScopedJavaLocalRef<jbyteArray> j_eme_id = StringToJavaBytes(env, session_id);
140 ScopedJavaLocalRef<jbyteArray> j_key_set_id = ToJavaByteArray( 152 ScopedJavaLocalRef<jbyteArray> j_key_set_id = ToJavaByteArray(
141 env, session_data->key_set_id.data(), session_data->key_set_id.size()); 153 env, session_data->key_set_id.data(), session_data->key_set_id.size());
142 ScopedJavaLocalRef<jstring> j_mime = 154 ScopedJavaLocalRef<jstring> j_mime =
143 ConvertUTF8ToJavaString(env, session_data->mime_type); 155 ConvertUTF8ToJavaString(env, session_data->mime_type);
144 156
145 RunCallbackAndroid(*j_callback, Java_PersistentInfo_create( 157 RunCallbackAndroid(*j_callback, Java_PersistentInfo_create(
146 env, j_eme_id, j_key_set_id, j_mime)); 158 env, j_eme_id, j_key_set_id, j_mime));
147 } 159 }
148 160
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 161 } // namespace media
OLDNEW
« media/base/android/media_drm_bridge.h ('K') | « 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