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

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

Issue 2444683002: Move MediaKeys::Exception to CdmPromise::Exception (Closed)
Patch Set: include "media/base/media_keys.h" Created 4 years, 1 month 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_bridge.h ('k') | media/base/cdm_callback_promise.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stddef.h> 7 #include <stddef.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 347
348 DCHECK(!certificate.empty()); 348 DCHECK(!certificate.empty());
349 349
350 JNIEnv* env = AttachCurrentThread(); 350 JNIEnv* env = AttachCurrentThread();
351 ScopedJavaLocalRef<jbyteArray> j_certificate = base::android::ToJavaByteArray( 351 ScopedJavaLocalRef<jbyteArray> j_certificate = base::android::ToJavaByteArray(
352 env, certificate.data(), certificate.size()); 352 env, certificate.data(), certificate.size());
353 if (Java_MediaDrmBridge_setServerCertificate(env, j_media_drm_, 353 if (Java_MediaDrmBridge_setServerCertificate(env, j_media_drm_,
354 j_certificate)) { 354 j_certificate)) {
355 promise->resolve(); 355 promise->resolve();
356 } else { 356 } else {
357 promise->reject(INVALID_ACCESS_ERROR, 0, "Set server certificate failed."); 357 promise->reject(CdmPromise::INVALID_ACCESS_ERROR, 0,
358 "Set server certificate failed.");
358 } 359 }
359 } 360 }
360 361
361 void MediaDrmBridge::CreateSessionAndGenerateRequest( 362 void MediaDrmBridge::CreateSessionAndGenerateRequest(
362 SessionType session_type, 363 SessionType session_type,
363 media::EmeInitDataType init_data_type, 364 media::EmeInitDataType init_data_type,
364 const std::vector<uint8_t>& init_data, 365 const std::vector<uint8_t>& init_data,
365 std::unique_ptr<media::NewSessionCdmPromise> promise) { 366 std::unique_ptr<media::NewSessionCdmPromise> promise) {
366 DCHECK(task_runner_->BelongsToCurrentThread()); 367 DCHECK(task_runner_->BelongsToCurrentThread());
367 DVLOG(2) << __FUNCTION__; 368 DVLOG(2) << __FUNCTION__;
368 369
369 if (session_type != media::MediaKeys::TEMPORARY_SESSION) { 370 if (session_type != media::MediaKeys::TEMPORARY_SESSION) {
370 NOTIMPLEMENTED() << "EME persistent sessions not yet supported on Android."; 371 NOTIMPLEMENTED() << "EME persistent sessions not yet supported on Android.";
371 promise->reject(NOT_SUPPORTED_ERROR, 0, 372 promise->reject(CdmPromise::NOT_SUPPORTED_ERROR, 0,
372 "Only the temporary session type is supported."); 373 "Only the temporary session type is supported.");
373 return; 374 return;
374 } 375 }
375 376
376 JNIEnv* env = AttachCurrentThread(); 377 JNIEnv* env = AttachCurrentThread();
377 ScopedJavaLocalRef<jbyteArray> j_init_data; 378 ScopedJavaLocalRef<jbyteArray> j_init_data;
378 ScopedJavaLocalRef<jobjectArray> j_optional_parameters; 379 ScopedJavaLocalRef<jobjectArray> j_optional_parameters;
379 380
380 MediaClientAndroid* client = GetMediaClientAndroid(); 381 MediaClientAndroid* client = GetMediaClientAndroid();
381 if (client) { 382 if (client) {
382 MediaDrmBridgeDelegate* delegate = 383 MediaDrmBridgeDelegate* delegate =
383 client->GetMediaDrmBridgeDelegate(scheme_uuid_); 384 client->GetMediaDrmBridgeDelegate(scheme_uuid_);
384 if (delegate) { 385 if (delegate) {
385 std::vector<uint8_t> init_data_from_delegate; 386 std::vector<uint8_t> init_data_from_delegate;
386 std::vector<std::string> optional_parameters_from_delegate; 387 std::vector<std::string> optional_parameters_from_delegate;
387 if (!delegate->OnCreateSession(init_data_type, init_data, 388 if (!delegate->OnCreateSession(init_data_type, init_data,
388 &init_data_from_delegate, 389 &init_data_from_delegate,
389 &optional_parameters_from_delegate)) { 390 &optional_parameters_from_delegate)) {
390 promise->reject(INVALID_ACCESS_ERROR, 0, "Invalid init data."); 391 promise->reject(CdmPromise::INVALID_ACCESS_ERROR, 0,
392 "Invalid init data.");
391 return; 393 return;
392 } 394 }
393 if (!init_data_from_delegate.empty()) { 395 if (!init_data_from_delegate.empty()) {
394 j_init_data = 396 j_init_data =
395 base::android::ToJavaByteArray(env, init_data_from_delegate.data(), 397 base::android::ToJavaByteArray(env, init_data_from_delegate.data(),
396 init_data_from_delegate.size()); 398 init_data_from_delegate.size());
397 } 399 }
398 if (!optional_parameters_from_delegate.empty()) { 400 if (!optional_parameters_from_delegate.empty()) {
399 j_optional_parameters = base::android::ToJavaArrayOfStrings( 401 j_optional_parameters = base::android::ToJavaArrayOfStrings(
400 env, optional_parameters_from_delegate); 402 env, optional_parameters_from_delegate);
(...skipping 15 matching lines...) Expand all
416 } 418 }
417 419
418 void MediaDrmBridge::LoadSession( 420 void MediaDrmBridge::LoadSession(
419 SessionType session_type, 421 SessionType session_type,
420 const std::string& session_id, 422 const std::string& session_id,
421 std::unique_ptr<media::NewSessionCdmPromise> promise) { 423 std::unique_ptr<media::NewSessionCdmPromise> promise) {
422 DCHECK(task_runner_->BelongsToCurrentThread()); 424 DCHECK(task_runner_->BelongsToCurrentThread());
423 DVLOG(2) << __FUNCTION__; 425 DVLOG(2) << __FUNCTION__;
424 426
425 NOTIMPLEMENTED() << "EME persistent sessions not yet supported on Android."; 427 NOTIMPLEMENTED() << "EME persistent sessions not yet supported on Android.";
426 promise->reject(NOT_SUPPORTED_ERROR, 0, "LoadSession() is not supported."); 428 promise->reject(CdmPromise::NOT_SUPPORTED_ERROR, 0,
429 "LoadSession() is not supported.");
427 } 430 }
428 431
429 void MediaDrmBridge::UpdateSession( 432 void MediaDrmBridge::UpdateSession(
430 const std::string& session_id, 433 const std::string& session_id,
431 const std::vector<uint8_t>& response, 434 const std::vector<uint8_t>& response,
432 std::unique_ptr<media::SimpleCdmPromise> promise) { 435 std::unique_ptr<media::SimpleCdmPromise> promise) {
433 DCHECK(task_runner_->BelongsToCurrentThread()); 436 DCHECK(task_runner_->BelongsToCurrentThread());
434 DVLOG(2) << __FUNCTION__; 437 DVLOG(2) << __FUNCTION__;
435 438
436 JNIEnv* env = AttachCurrentThread(); 439 JNIEnv* env = AttachCurrentThread();
(...skipping 21 matching lines...) Expand all
458 Java_MediaDrmBridge_closeSession(env, j_media_drm_, j_session_id, promise_id); 461 Java_MediaDrmBridge_closeSession(env, j_media_drm_, j_session_id, promise_id);
459 } 462 }
460 463
461 void MediaDrmBridge::RemoveSession( 464 void MediaDrmBridge::RemoveSession(
462 const std::string& session_id, 465 const std::string& session_id,
463 std::unique_ptr<media::SimpleCdmPromise> promise) { 466 std::unique_ptr<media::SimpleCdmPromise> promise) {
464 DCHECK(task_runner_->BelongsToCurrentThread()); 467 DCHECK(task_runner_->BelongsToCurrentThread());
465 DVLOG(2) << __FUNCTION__; 468 DVLOG(2) << __FUNCTION__;
466 469
467 NOTIMPLEMENTED() << "EME persistent sessions not yet supported on Android."; 470 NOTIMPLEMENTED() << "EME persistent sessions not yet supported on Android.";
468 promise->reject(NOT_SUPPORTED_ERROR, 0, "RemoveSession() is not supported."); 471 promise->reject(CdmPromise::NOT_SUPPORTED_ERROR, 0,
472 "RemoveSession() is not supported.");
469 } 473 }
470 474
471 CdmContext* MediaDrmBridge::GetCdmContext() { 475 CdmContext* MediaDrmBridge::GetCdmContext() {
472 DVLOG(2) << __FUNCTION__; 476 DVLOG(2) << __FUNCTION__;
473 477
474 return &media_drm_bridge_cdm_context_; 478 return &media_drm_bridge_cdm_context_;
475 } 479 }
476 480
477 void MediaDrmBridge::DeleteOnCorrectThread() const { 481 void MediaDrmBridge::DeleteOnCorrectThread() const {
478 DVLOG(1) << __FUNCTION__; 482 DVLOG(1) << __FUNCTION__;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 526
523 void MediaDrmBridge::ResolvePromiseWithSession(uint32_t promise_id, 527 void MediaDrmBridge::ResolvePromiseWithSession(uint32_t promise_id,
524 const std::string& session_id) { 528 const std::string& session_id) {
525 DVLOG(2) << __FUNCTION__; 529 DVLOG(2) << __FUNCTION__;
526 cdm_promise_adapter_.ResolvePromise(promise_id, session_id); 530 cdm_promise_adapter_.ResolvePromise(promise_id, session_id);
527 } 531 }
528 532
529 void MediaDrmBridge::RejectPromise(uint32_t promise_id, 533 void MediaDrmBridge::RejectPromise(uint32_t promise_id,
530 const std::string& error_message) { 534 const std::string& error_message) {
531 DVLOG(2) << __FUNCTION__; 535 DVLOG(2) << __FUNCTION__;
532 cdm_promise_adapter_.RejectPromise(promise_id, MediaKeys::UNKNOWN_ERROR, 0, 536 cdm_promise_adapter_.RejectPromise(promise_id, CdmPromise::UNKNOWN_ERROR, 0,
533 error_message); 537 error_message);
534 } 538 }
535 539
536 void MediaDrmBridge::SetMediaCryptoReadyCB( 540 void MediaDrmBridge::SetMediaCryptoReadyCB(
537 const MediaCryptoReadyCB& media_crypto_ready_cb) { 541 const MediaCryptoReadyCB& media_crypto_ready_cb) {
538 if (!task_runner_->BelongsToCurrentThread()) { 542 if (!task_runner_->BelongsToCurrentThread()) {
539 task_runner_->PostTask( 543 task_runner_->PostTask(
540 FROM_HERE, 544 FROM_HERE,
541 base::Bind(&MediaDrmBridge::SetMediaCryptoReadyCB, 545 base::Bind(&MediaDrmBridge::SetMediaCryptoReadyCB,
542 weak_factory_.GetWeakPtr(), media_crypto_ready_cb)); 546 weak_factory_.GetWeakPtr(), media_crypto_ready_cb));
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 } 871 }
868 872
869 void MediaDrmBridge::OnHasAdditionalUsableKey() { 873 void MediaDrmBridge::OnHasAdditionalUsableKey() {
870 DCHECK(task_runner_->BelongsToCurrentThread()); 874 DCHECK(task_runner_->BelongsToCurrentThread());
871 DVLOG(1) << __FUNCTION__; 875 DVLOG(1) << __FUNCTION__;
872 876
873 player_tracker_.NotifyNewKey(); 877 player_tracker_.NotifyNewKey();
874 } 878 }
875 879
876 } // namespace media 880 } // namespace media
OLDNEW
« no previous file with comments | « media/base/android/media_drm_bridge.h ('k') | media/base/cdm_callback_promise.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698