OLD | NEW |
---|---|
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 <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/android/build_info.h" | 9 #include "base/android/build_info.h" |
10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
304 CHECK(env); | 304 CHECK(env); |
305 | 305 |
306 ScopedJavaLocalRef<jbyteArray> j_scheme_uuid = | 306 ScopedJavaLocalRef<jbyteArray> j_scheme_uuid = |
307 base::android::ToJavaByteArray(env, &scheme_uuid[0], scheme_uuid.size()); | 307 base::android::ToJavaByteArray(env, &scheme_uuid[0], scheme_uuid.size()); |
308 j_media_drm_.Reset(Java_MediaDrmBridge_create( | 308 j_media_drm_.Reset(Java_MediaDrmBridge_create( |
309 env, j_scheme_uuid.obj(), reinterpret_cast<intptr_t>(this))); | 309 env, j_scheme_uuid.obj(), reinterpret_cast<intptr_t>(this))); |
310 } | 310 } |
311 | 311 |
312 MediaDrmBridge::~MediaDrmBridge() { | 312 MediaDrmBridge::~MediaDrmBridge() { |
313 JNIEnv* env = AttachCurrentThread(); | 313 JNIEnv* env = AttachCurrentThread(); |
314 player_tracker_.NotifyCdmDestroyed(); | |
314 if (!j_media_drm_.is_null()) | 315 if (!j_media_drm_.is_null()) |
315 Java_MediaDrmBridge_release(env, j_media_drm_.obj()); | 316 Java_MediaDrmBridge_release(env, j_media_drm_.obj()); |
316 } | 317 } |
317 | 318 |
318 // static | 319 // static |
319 scoped_ptr<MediaDrmBridge> MediaDrmBridge::Create( | 320 scoped_ptr<MediaDrmBridge> MediaDrmBridge::Create( |
320 const std::string& key_system, | 321 const std::string& key_system, |
321 const SessionCreatedCB& session_created_cb, | 322 const SessionCreatedCB& session_created_cb, |
322 const SessionMessageCB& session_message_cb, | 323 const SessionMessageCB& session_message_cb, |
323 const SessionReadyCB& session_ready_cb, | 324 const SessionReadyCB& session_ready_cb, |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
415 DVLOG(1) << __FUNCTION__; | 416 DVLOG(1) << __FUNCTION__; |
416 | 417 |
417 DCHECK(!session_ready_cb_.is_null()) | 418 DCHECK(!session_ready_cb_.is_null()) |
418 << __FUNCTION__ << " called on a sessionless MediaDrmBridge object."; | 419 << __FUNCTION__ << " called on a sessionless MediaDrmBridge object."; |
419 | 420 |
420 JNIEnv* env = AttachCurrentThread(); | 421 JNIEnv* env = AttachCurrentThread(); |
421 ScopedJavaLocalRef<jbyteArray> j_response = | 422 ScopedJavaLocalRef<jbyteArray> j_response = |
422 base::android::ToJavaByteArray(env, response, response_length); | 423 base::android::ToJavaByteArray(env, response, response_length); |
423 Java_MediaDrmBridge_updateSession( | 424 Java_MediaDrmBridge_updateSession( |
424 env, j_media_drm_.obj(), session_id, j_response.obj()); | 425 env, j_media_drm_.obj(), session_id, j_response.obj()); |
426 | |
427 player_tracker_.NotifyNewKey(); | |
ddorwin
2014/05/30 20:50:05
Just FYI: This will not be called here in the futu
xhwang
2014/06/02 20:11:43
Yep. Added TODO.
| |
425 } | 428 } |
426 | 429 |
427 void MediaDrmBridge::ReleaseSession(uint32 session_id) { | 430 void MediaDrmBridge::ReleaseSession(uint32 session_id) { |
428 DVLOG(1) << __FUNCTION__; | 431 DVLOG(1) << __FUNCTION__; |
429 | 432 |
430 DCHECK(!session_closed_cb_.is_null()) | 433 DCHECK(!session_closed_cb_.is_null()) |
431 << __FUNCTION__ << " called on a sessionless MediaDrmBridge object."; | 434 << __FUNCTION__ << " called on a sessionless MediaDrmBridge object."; |
432 | 435 |
433 JNIEnv* env = AttachCurrentThread(); | 436 JNIEnv* env = AttachCurrentThread(); |
434 Java_MediaDrmBridge_releaseSession(env, j_media_drm_.obj(), session_id); | 437 Java_MediaDrmBridge_releaseSession(env, j_media_drm_.obj(), session_id); |
435 } | 438 } |
436 | 439 |
440 int MediaDrmBridge::RegisterPlayer(const base::Closure& new_key_cb, | |
441 const base::Closure& cdm_destroyed_cb) { | |
442 return player_tracker_.RegisterPlayer(new_key_cb, cdm_destroyed_cb); | |
443 } | |
444 | |
445 void MediaDrmBridge::UnregisterPlayer(int registration_id) { | |
446 player_tracker_.UnregisterPlayer(registration_id); | |
447 } | |
448 | |
437 void MediaDrmBridge::SetMediaCryptoReadyCB(const base::Closure& closure) { | 449 void MediaDrmBridge::SetMediaCryptoReadyCB(const base::Closure& closure) { |
438 if (closure.is_null()) { | 450 if (closure.is_null()) { |
439 media_crypto_ready_cb_.Reset(); | 451 media_crypto_ready_cb_.Reset(); |
440 return; | 452 return; |
441 } | 453 } |
442 | 454 |
443 DCHECK(media_crypto_ready_cb_.is_null()); | 455 DCHECK(media_crypto_ready_cb_.is_null()); |
444 | 456 |
445 if (!GetMediaCrypto().is_null()) { | 457 if (!GetMediaCrypto().is_null()) { |
446 base::MessageLoopProxy::current()->PostTask(FROM_HERE, closure); | 458 base::MessageLoopProxy::current()->PostTask(FROM_HERE, closure); |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
528 JNIEnv* env = AttachCurrentThread(); | 540 JNIEnv* env = AttachCurrentThread(); |
529 Java_MediaDrmBridge_resetDeviceCredentials(env, j_media_drm_.obj()); | 541 Java_MediaDrmBridge_resetDeviceCredentials(env, j_media_drm_.obj()); |
530 } | 542 } |
531 | 543 |
532 void MediaDrmBridge::OnResetDeviceCredentialsCompleted( | 544 void MediaDrmBridge::OnResetDeviceCredentialsCompleted( |
533 JNIEnv* env, jobject, bool success) { | 545 JNIEnv* env, jobject, bool success) { |
534 base::ResetAndReturn(&reset_credentials_cb_).Run(success); | 546 base::ResetAndReturn(&reset_credentials_cb_).Run(success); |
535 } | 547 } |
536 | 548 |
537 } // namespace media | 549 } // namespace media |
OLD | NEW |