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

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

Issue 105383002: Rename EME WD call parameters (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years 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 (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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_bridge.h" 5 #include "media/base/android/media_drm_bridge.h"
6 6
7 #include "base/android/build_info.h" 7 #include "base/android/build_info.h"
8 #include "base/android/jni_array.h" 8 #include "base/android/jni_array.h"
9 #include "base/android/jni_string.h" 9 #include "base/android/jni_string.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 env, j_scheme_uuid.obj(), j_security_level.obj(), 229 env, j_scheme_uuid.obj(), j_security_level.obj(),
230 reinterpret_cast<intptr_t>(this))); 230 reinterpret_cast<intptr_t>(this)));
231 } 231 }
232 232
233 MediaDrmBridge::~MediaDrmBridge() { 233 MediaDrmBridge::~MediaDrmBridge() {
234 JNIEnv* env = AttachCurrentThread(); 234 JNIEnv* env = AttachCurrentThread();
235 if (!j_media_drm_.is_null()) 235 if (!j_media_drm_.is_null())
236 Java_MediaDrmBridge_release(env, j_media_drm_.obj()); 236 Java_MediaDrmBridge_release(env, j_media_drm_.obj());
237 } 237 }
238 238
239 bool MediaDrmBridge::CreateSession(uint32 reference_id, 239 bool MediaDrmBridge::CreateSession(uint32 session_id,
240 const std::string& type, 240 const std::string& type,
241 const uint8* init_data, 241 const uint8* init_data,
242 int init_data_length) { 242 int init_data_length) {
243 std::vector<uint8> pssh_data; 243 std::vector<uint8> pssh_data;
244 if (!GetPsshData(init_data, init_data_length, scheme_uuid_, &pssh_data)) 244 if (!GetPsshData(init_data, init_data_length, scheme_uuid_, &pssh_data))
245 return false; 245 return false;
246 246
247 JNIEnv* env = AttachCurrentThread(); 247 JNIEnv* env = AttachCurrentThread();
248 ScopedJavaLocalRef<jbyteArray> j_pssh_data = 248 ScopedJavaLocalRef<jbyteArray> j_pssh_data =
249 base::android::ToJavaByteArray(env, &pssh_data[0], pssh_data.size()); 249 base::android::ToJavaByteArray(env, &pssh_data[0], pssh_data.size());
250 ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, type); 250 ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, type);
251 pending_key_request_reference_ids_.push(reference_id); 251 pending_key_request_session_ids_.push(session_id);
252 Java_MediaDrmBridge_generateKeyRequest( 252 Java_MediaDrmBridge_generateKeyRequest(
253 env, j_media_drm_.obj(), j_pssh_data.obj(), j_mime.obj()); 253 env, j_media_drm_.obj(), j_pssh_data.obj(), j_mime.obj());
254 return true; 254 return true;
255 } 255 }
256 256
257 void MediaDrmBridge::UpdateSession(uint32 reference_id, 257 void MediaDrmBridge::UpdateSession(uint32 session_id,
258 const uint8* response, 258 const uint8* response,
259 int response_length) { 259 int response_length) {
260 DVLOG(1) << __FUNCTION__; 260 DVLOG(1) << __FUNCTION__;
261 JNIEnv* env = AttachCurrentThread(); 261 JNIEnv* env = AttachCurrentThread();
262 ScopedJavaLocalRef<jbyteArray> j_response = 262 ScopedJavaLocalRef<jbyteArray> j_response =
263 base::android::ToJavaByteArray(env, response, response_length); 263 base::android::ToJavaByteArray(env, response, response_length);
264 ScopedJavaLocalRef<jstring> j_session_id = 264 ScopedJavaLocalRef<jstring> j_session_id =
265 ConvertUTF8ToJavaString(env, LookupSessionId(reference_id)); 265 ConvertUTF8ToJavaString(env, LookupSessionId(session_id));
266 // TODO(jrummell): Update Android names to match new functionality. 266 // TODO(jrummell): Update Android names to match new functionality.
267 Java_MediaDrmBridge_addKey( 267 Java_MediaDrmBridge_addKey(
268 env, j_media_drm_.obj(), j_session_id.obj(), j_response.obj()); 268 env, j_media_drm_.obj(), j_session_id.obj(), j_response.obj());
269 } 269 }
270 270
271 void MediaDrmBridge::ReleaseSession(uint32 reference_id) { 271 void MediaDrmBridge::ReleaseSession(uint32 session_id) {
272 JNIEnv* env = AttachCurrentThread(); 272 JNIEnv* env = AttachCurrentThread();
273 ScopedJavaLocalRef<jstring> j_session_id = 273 ScopedJavaLocalRef<jstring> j_session_id =
274 ConvertUTF8ToJavaString(env, LookupSessionId(reference_id)); 274 ConvertUTF8ToJavaString(env, LookupSessionId(session_id));
275 Java_MediaDrmBridge_cancelKeyRequest( 275 Java_MediaDrmBridge_cancelKeyRequest(
276 env, j_media_drm_.obj(), j_session_id.obj()); 276 env, j_media_drm_.obj(), j_session_id.obj());
277 } 277 }
278 278
279 void MediaDrmBridge::SetMediaCryptoReadyCB(const base::Closure& closure) { 279 void MediaDrmBridge::SetMediaCryptoReadyCB(const base::Closure& closure) {
280 if (closure.is_null()) { 280 if (closure.is_null()) {
281 media_crypto_ready_cb_.Reset(); 281 media_crypto_ready_cb_.Reset();
282 return; 282 return;
283 } 283 }
284 284
(...skipping 11 matching lines...) Expand all
296 DCHECK(!GetMediaCrypto().is_null()); 296 DCHECK(!GetMediaCrypto().is_null());
297 if (!media_crypto_ready_cb_.is_null()) 297 if (!media_crypto_ready_cb_.is_null())
298 base::ResetAndReturn(&media_crypto_ready_cb_).Run(); 298 base::ResetAndReturn(&media_crypto_ready_cb_).Run();
299 } 299 }
300 300
301 void MediaDrmBridge::OnKeyMessage(JNIEnv* env, 301 void MediaDrmBridge::OnKeyMessage(JNIEnv* env,
302 jobject j_media_drm, 302 jobject j_media_drm,
303 jstring j_session_id, 303 jstring j_session_id,
304 jbyteArray j_message, 304 jbyteArray j_message,
305 jstring j_destination_url) { 305 jstring j_destination_url) {
306 std::string session_id = ConvertJavaStringToUTF8(env, j_session_id); 306 std::string web_session_id = ConvertJavaStringToUTF8(env, j_session_id);
307 uint32_t reference_id = DetermineReferenceId(session_id); 307 uint32_t session_id = DetermineReferenceId(web_session_id);
308 std::vector<uint8> message; 308 std::vector<uint8> message;
309 JavaByteArrayToByteVector(env, j_message, &message); 309 JavaByteArrayToByteVector(env, j_message, &message);
310 std::string destination_url = ConvertJavaStringToUTF8(env, j_destination_url); 310 std::string destination_url = ConvertJavaStringToUTF8(env, j_destination_url);
311 311
312 manager_->OnSessionCreated(media_keys_id_, reference_id, session_id); 312 manager_->OnSessionCreated(media_keys_id_, session_id, web_session_id);
313 manager_->OnSessionMessage( 313 manager_->OnSessionMessage(
314 media_keys_id_, reference_id, message, destination_url); 314 media_keys_id_, session_id, message, destination_url);
315 } 315 }
316 316
317 void MediaDrmBridge::OnKeyAdded(JNIEnv* env, jobject, jstring j_session_id) { 317 void MediaDrmBridge::OnKeyAdded(JNIEnv* env, jobject, jstring j_session_id) {
318 std::string session_id = ConvertJavaStringToUTF8(env, j_session_id); 318 std::string web_session_id = ConvertJavaStringToUTF8(env, j_session_id);
ddorwin 2013/12/05 00:44:52 Is MediaDrm passing us sessionId instead of "refer
xhwang 2013/12/05 18:51:37 I'll fix MediaDrmBridge so that it'll pass back a
319 uint32_t reference_id = DetermineReferenceId(session_id); 319 uint32_t session_id = DetermineReferenceId(web_session_id);
320 manager_->OnSessionReady(media_keys_id_, reference_id); 320 manager_->OnSessionReady(media_keys_id_, session_id);
321 } 321 }
322 322
323 void MediaDrmBridge::OnKeyError(JNIEnv* env, jobject, jstring j_session_id) { 323 void MediaDrmBridge::OnKeyError(JNIEnv* env, jobject, jstring j_session_id) {
324 // |j_session_id| can be NULL, in which case we'll return an empty string. 324 // |j_session_id| can be NULL, in which case we'll return an empty string.
325 std::string session_id = ConvertJavaStringToUTF8(env, j_session_id); 325 std::string web_session_id = ConvertJavaStringToUTF8(env, j_session_id);
326 uint32 reference_id = DetermineReferenceId(session_id); 326 uint32 session_id = DetermineReferenceId(web_session_id);
327 manager_->OnSessionError( 327 manager_->OnSessionError(
328 media_keys_id_, reference_id, MediaKeys::kUnknownError, 0); 328 media_keys_id_, session_id, MediaKeys::kUnknownError, 0);
329 } 329 }
330 330
331 ScopedJavaLocalRef<jobject> MediaDrmBridge::GetMediaCrypto() { 331 ScopedJavaLocalRef<jobject> MediaDrmBridge::GetMediaCrypto() {
332 JNIEnv* env = AttachCurrentThread(); 332 JNIEnv* env = AttachCurrentThread();
333 return Java_MediaDrmBridge_getMediaCrypto(env, j_media_drm_.obj()); 333 return Java_MediaDrmBridge_getMediaCrypto(env, j_media_drm_.obj());
334 } 334 }
335 335
336 // static 336 // static
337 bool MediaDrmBridge::IsSecureDecoderRequired(SecurityLevel security_level) { 337 bool MediaDrmBridge::IsSecureDecoderRequired(SecurityLevel security_level) {
338 return MediaDrmBridge::SECURITY_LEVEL_1 == security_level; 338 return MediaDrmBridge::SECURITY_LEVEL_1 == security_level;
(...skipping 28 matching lines...) Expand all
367 uint32_t MediaDrmBridge::DetermineReferenceId(const std::string& session_id) { 367 uint32_t MediaDrmBridge::DetermineReferenceId(const std::string& session_id) {
368 for (SessionMap::iterator it = session_map_.begin(); 368 for (SessionMap::iterator it = session_map_.begin();
369 it != session_map_.end(); 369 it != session_map_.end();
370 ++it) { 370 ++it) {
371 if (it->second == session_id) 371 if (it->second == session_id)
372 return it->first; 372 return it->first;
373 } 373 }
374 374
375 // There is no entry in the map; assume it came from the oldest 375 // There is no entry in the map; assume it came from the oldest
376 // GenerateKeyRequest() call. 376 // GenerateKeyRequest() call.
377 DCHECK(!pending_key_request_reference_ids_.empty()); 377 DCHECK(!pending_key_request_session_ids_.empty());
378 uint32 reference_id = pending_key_request_reference_ids_.front(); 378 uint32 session_reference_id = pending_key_request_session_ids_.front();
379 pending_key_request_reference_ids_.pop(); 379 pending_key_request_session_ids_.pop();
380 380
381 // If this is a valid |session_id|, add it to the list. Otherwise, avoid 381 // If this is a valid |session_id|, add it to the list. Otherwise, avoid
382 // adding empty string as a mapping to prevent future calls with an empty 382 // adding empty string as a mapping to prevent future calls with an empty
383 // string from using the wrong reference_id. 383 // string from using the wrong session_reference_id.
384 if (!session_id.empty()) { 384 if (!session_id.empty()) {
385 DCHECK(session_map_.find(reference_id) == session_map_.end()); 385 DCHECK(session_map_.find(session_reference_id) == session_map_.end());
386 DCHECK(!session_id.empty()); 386 session_map_[session_reference_id] = session_id;
387 session_map_[reference_id] = session_id;
388 } 387 }
389 388
390 return reference_id; 389 return session_reference_id;
391 } 390 }
392 391
393 const std::string& MediaDrmBridge::LookupSessionId(uint32 reference_id) { 392 const std::string& MediaDrmBridge::LookupSessionId(uint32 session_id) {
394 // Session may not exist if error happens during GenerateKeyRequest(). 393 // Session may not exist if error happens during GenerateKeyRequest().
395 SessionMap::iterator it = session_map_.find(reference_id); 394 SessionMap::iterator it = session_map_.find(session_id);
396 return (it != session_map_.end()) ? it->second : base::EmptyString(); 395 return (it != session_map_.end()) ? it->second : base::EmptyString();
397 } 396 }
398 397
399 } // namespace media 398 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698