| 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_.NotifyCdmUnset(); |
| 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 // TODO(xhwang/jrummell): Move this when usableKeyIds/keyschange are |
| 428 // implemented. |
| 429 player_tracker_.NotifyNewKey(); |
| 425 } | 430 } |
| 426 | 431 |
| 427 void MediaDrmBridge::ReleaseSession(uint32 session_id) { | 432 void MediaDrmBridge::ReleaseSession(uint32 session_id) { |
| 428 DVLOG(1) << __FUNCTION__; | 433 DVLOG(1) << __FUNCTION__; |
| 429 | 434 |
| 430 DCHECK(!session_closed_cb_.is_null()) | 435 DCHECK(!session_closed_cb_.is_null()) |
| 431 << __FUNCTION__ << " called on a sessionless MediaDrmBridge object."; | 436 << __FUNCTION__ << " called on a sessionless MediaDrmBridge object."; |
| 432 | 437 |
| 433 JNIEnv* env = AttachCurrentThread(); | 438 JNIEnv* env = AttachCurrentThread(); |
| 434 Java_MediaDrmBridge_releaseSession(env, j_media_drm_.obj(), session_id); | 439 Java_MediaDrmBridge_releaseSession(env, j_media_drm_.obj(), session_id); |
| 435 } | 440 } |
| 436 | 441 |
| 442 int MediaDrmBridge::RegisterPlayer(const base::Closure& new_key_cb, |
| 443 const base::Closure& cdm_unset_cb) { |
| 444 return player_tracker_.RegisterPlayer(new_key_cb, cdm_unset_cb); |
| 445 } |
| 446 |
| 447 void MediaDrmBridge::UnregisterPlayer(int registration_id) { |
| 448 player_tracker_.UnregisterPlayer(registration_id); |
| 449 } |
| 450 |
| 437 void MediaDrmBridge::SetMediaCryptoReadyCB(const base::Closure& closure) { | 451 void MediaDrmBridge::SetMediaCryptoReadyCB(const base::Closure& closure) { |
| 438 if (closure.is_null()) { | 452 if (closure.is_null()) { |
| 439 media_crypto_ready_cb_.Reset(); | 453 media_crypto_ready_cb_.Reset(); |
| 440 return; | 454 return; |
| 441 } | 455 } |
| 442 | 456 |
| 443 DCHECK(media_crypto_ready_cb_.is_null()); | 457 DCHECK(media_crypto_ready_cb_.is_null()); |
| 444 | 458 |
| 445 if (!GetMediaCrypto().is_null()) { | 459 if (!GetMediaCrypto().is_null()) { |
| 446 base::MessageLoopProxy::current()->PostTask(FROM_HERE, closure); | 460 base::MessageLoopProxy::current()->PostTask(FROM_HERE, closure); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 JNIEnv* env = AttachCurrentThread(); | 542 JNIEnv* env = AttachCurrentThread(); |
| 529 Java_MediaDrmBridge_resetDeviceCredentials(env, j_media_drm_.obj()); | 543 Java_MediaDrmBridge_resetDeviceCredentials(env, j_media_drm_.obj()); |
| 530 } | 544 } |
| 531 | 545 |
| 532 void MediaDrmBridge::OnResetDeviceCredentialsCompleted( | 546 void MediaDrmBridge::OnResetDeviceCredentialsCompleted( |
| 533 JNIEnv* env, jobject, bool success) { | 547 JNIEnv* env, jobject, bool success) { |
| 534 base::ResetAndReturn(&reset_credentials_cb_).Run(success); | 548 base::ResetAndReturn(&reset_credentials_cb_).Run(success); |
| 535 } | 549 } |
| 536 | 550 |
| 537 } // namespace media | 551 } // namespace media |
| OLD | NEW |