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

Side by Side Diff: content/browser/media/android/browser_media_player_manager.cc

Issue 105383002: Rename EME WD call parameters (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nit 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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 "content/browser/media/android/browser_media_player_manager.h" 5 #include "content/browser/media/android/browser_media_player_manager.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "content/browser/android/content_view_core_impl.h" 8 #include "content/browser/android/content_view_core_impl.h"
9 #include "content/browser/media/android/browser_demuxer_android.h" 9 #include "content/browser/media/android/browser_demuxer_android.h"
10 #include "content/browser/media/android/media_resource_getter_impl.h" 10 #include "content/browser/media/android/media_resource_getter_impl.h"
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 if (CommandLine::ForCurrentProcess()->HasSwitch( 360 if (CommandLine::ForCurrentProcess()->HasSwitch(
361 switches::kDisableGestureRequirementForMediaFullscreen)) { 361 switches::kDisableGestureRequirementForMediaFullscreen)) {
362 Send(new MediaPlayerMsg_RequestFullscreen(routing_id(), player_id)); 362 Send(new MediaPlayerMsg_RequestFullscreen(routing_id(), player_id));
363 } 363 }
364 } 364 }
365 365
366 // The following 5 functions are EME MediaKeySession events. 366 // The following 5 functions are EME MediaKeySession events.
367 367
368 void BrowserMediaPlayerManager::OnSessionCreated( 368 void BrowserMediaPlayerManager::OnSessionCreated(
369 int media_keys_id, 369 int media_keys_id,
370 uint32 reference_id, 370 uint32 session_id,
371 const std::string& session_id) { 371 const std::string& web_session_id) {
372 Send(new MediaKeysMsg_SetSessionId( 372 Send(new MediaKeysMsg_SetSessionId(
373 routing_id(), media_keys_id, reference_id, session_id)); 373 routing_id(), media_keys_id, session_id, web_session_id));
374 } 374 }
375 375
376 void BrowserMediaPlayerManager::OnSessionMessage( 376 void BrowserMediaPlayerManager::OnSessionMessage(
377 int media_keys_id, 377 int media_keys_id,
378 uint32 reference_id, 378 uint32 session_id,
379 const std::vector<uint8>& message, 379 const std::vector<uint8>& message,
380 const std::string& destination_url) { 380 const std::string& destination_url) {
381 Send(new MediaKeysMsg_KeyMessage( 381 Send(new MediaKeysMsg_KeyMessage(
382 routing_id(), media_keys_id, reference_id, message, destination_url)); 382 routing_id(), media_keys_id, session_id, message, destination_url));
383 } 383 }
384 384
385 void BrowserMediaPlayerManager::OnSessionReady(int media_keys_id, 385 void BrowserMediaPlayerManager::OnSessionReady(int media_keys_id,
386 uint32 reference_id) { 386 uint32 session_id) {
387 Send(new MediaKeysMsg_KeyAdded(routing_id(), media_keys_id, reference_id)); 387 Send(new MediaKeysMsg_KeyAdded(routing_id(), media_keys_id, session_id));
388 } 388 }
389 389
390 void BrowserMediaPlayerManager::OnSessionClosed(int media_keys_id, 390 void BrowserMediaPlayerManager::OnSessionClosed(int media_keys_id,
391 uint32 reference_id) { 391 uint32 session_id) {
392 // TODO(jrummell): Update Android calls and IPC names. 392 // TODO(jrummell): Update Android calls and IPC names.
393 } 393 }
394 394
395 void BrowserMediaPlayerManager::OnSessionError( 395 void BrowserMediaPlayerManager::OnSessionError(
396 int media_keys_id, 396 int media_keys_id,
397 uint32 reference_id, 397 uint32 session_id,
398 media::MediaKeys::KeyError error_code, 398 media::MediaKeys::KeyError error_code,
399 int system_code) { 399 int system_code) {
400 Send(new MediaKeysMsg_KeyError(routing_id(), media_keys_id, 400 Send(new MediaKeysMsg_KeyError(
401 reference_id, error_code, system_code)); 401 routing_id(), media_keys_id, session_id, error_code, system_code));
402 } 402 }
403 403
404 #if defined(GOOGLE_TV) 404 #if defined(GOOGLE_TV)
405 void BrowserMediaPlayerManager::AttachExternalVideoSurface(int player_id, 405 void BrowserMediaPlayerManager::AttachExternalVideoSurface(int player_id,
406 jobject surface) { 406 jobject surface) {
407 MediaPlayerAndroid* player = GetPlayer(player_id); 407 MediaPlayerAndroid* player = GetPlayer(player_id);
408 if (player) { 408 if (player) {
409 player->SetVideoSurface( 409 player->SetVideoSurface(
410 gfx::ScopedJavaSurface::AcquireExternalSurface(surface)); 410 gfx::ScopedJavaSurface::AcquireExternalSurface(surface));
411 } 411 }
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 const std::vector<uint8>& uuid, 547 const std::vector<uint8>& uuid,
548 const GURL& frame_url) { 548 const GURL& frame_url) {
549 AddDrmBridge(media_keys_id, uuid, frame_url); 549 AddDrmBridge(media_keys_id, uuid, frame_url);
550 // In EME v0.1b MediaKeys lives in the media element. So the |media_keys_id| 550 // In EME v0.1b MediaKeys lives in the media element. So the |media_keys_id|
551 // is the same as the |player_id|. 551 // is the same as the |player_id|.
552 OnSetMediaKeys(media_keys_id, media_keys_id); 552 OnSetMediaKeys(media_keys_id, media_keys_id);
553 } 553 }
554 554
555 void BrowserMediaPlayerManager::OnGenerateKeyRequest( 555 void BrowserMediaPlayerManager::OnGenerateKeyRequest(
556 int media_keys_id, 556 int media_keys_id,
557 uint32 reference_id, 557 uint32 session_id,
558 const std::string& type, 558 const std::string& type,
559 const std::vector<uint8>& init_data) { 559 const std::vector<uint8>& init_data) {
560 if (CommandLine::ForCurrentProcess() 560 if (CommandLine::ForCurrentProcess()
561 ->HasSwitch(switches::kDisableInfobarForProtectedMediaIdentifier)) { 561 ->HasSwitch(switches::kDisableInfobarForProtectedMediaIdentifier)) {
562 GenerateKeyIfAllowed(media_keys_id, reference_id, type, init_data, true); 562 GenerateKeyIfAllowed(media_keys_id, session_id, type, init_data, true);
563 return; 563 return;
564 } 564 }
565 565
566 MediaDrmBridge* drm_bridge = GetDrmBridge(media_keys_id); 566 MediaDrmBridge* drm_bridge = GetDrmBridge(media_keys_id);
567 if (!drm_bridge) { 567 if (!drm_bridge) {
568 DLOG(WARNING) << "No MediaDrmBridge for ID: " << media_keys_id << " found"; 568 DLOG(WARNING) << "No MediaDrmBridge for ID: " << media_keys_id << " found";
569 OnSessionError( 569 OnSessionError(
570 media_keys_id, reference_id, media::MediaKeys::kUnknownError, 0); 570 media_keys_id, session_id, media::MediaKeys::kUnknownError, 0);
571 return; 571 return;
572 } 572 }
573 573
574 if (media_keys_ids_approved_.find(media_keys_id) == 574 if (media_keys_ids_approved_.find(media_keys_id) ==
575 media_keys_ids_approved_.end()) { 575 media_keys_ids_approved_.end()) {
576 media_keys_ids_pending_approval_.insert(media_keys_id); 576 media_keys_ids_pending_approval_.insert(media_keys_id);
577 } 577 }
578 web_contents()->GetDelegate()->RequestProtectedMediaIdentifierPermission( 578 web_contents()->GetDelegate()->RequestProtectedMediaIdentifierPermission(
579 web_contents(), 579 web_contents(),
580 drm_bridge->frame_url(), 580 drm_bridge->frame_url(),
581 base::Bind(&BrowserMediaPlayerManager::GenerateKeyIfAllowed, 581 base::Bind(&BrowserMediaPlayerManager::GenerateKeyIfAllowed,
582 weak_ptr_factory_.GetWeakPtr(), 582 weak_ptr_factory_.GetWeakPtr(),
583 media_keys_id, 583 media_keys_id,
584 reference_id, 584 session_id,
585 type, 585 type,
586 init_data)); 586 init_data));
587 } 587 }
588 588
589 void BrowserMediaPlayerManager::OnAddKey(int media_keys_id, 589 void BrowserMediaPlayerManager::OnAddKey(int media_keys_id,
590 uint32 reference_id, 590 uint32 session_id,
591 const std::vector<uint8>& key, 591 const std::vector<uint8>& key,
592 const std::vector<uint8>& init_data) { 592 const std::vector<uint8>& init_data) {
593 MediaDrmBridge* drm_bridge = GetDrmBridge(media_keys_id); 593 MediaDrmBridge* drm_bridge = GetDrmBridge(media_keys_id);
594 if (!drm_bridge) { 594 if (!drm_bridge) {
595 DLOG(WARNING) << "No MediaDrmBridge for ID: " << media_keys_id << " found"; 595 DLOG(WARNING) << "No MediaDrmBridge for ID: " << media_keys_id << " found";
596 OnSessionError( 596 OnSessionError(
597 media_keys_id, reference_id, media::MediaKeys::kUnknownError, 0); 597 media_keys_id, session_id, media::MediaKeys::kUnknownError, 0);
598 return; 598 return;
599 } 599 }
600 600
601 DCHECK(init_data.empty()); 601 DCHECK(init_data.empty());
602 drm_bridge->UpdateSession(reference_id, &key[0], key.size()); 602 drm_bridge->UpdateSession(session_id, &key[0], key.size());
603 // In EME v0.1b MediaKeys lives in the media element. So the |media_keys_id| 603 // In EME v0.1b MediaKeys lives in the media element. So the |media_keys_id|
604 // is the same as the |player_id|. 604 // is the same as the |player_id|.
605 // TODO(xhwang): Separate |media_keys_id| and |player_id|. 605 // TODO(xhwang): Separate |media_keys_id| and |player_id|.
606 MediaPlayerAndroid* player = GetPlayer(media_keys_id); 606 MediaPlayerAndroid* player = GetPlayer(media_keys_id);
607 if (player) 607 if (player)
608 player->OnKeyAdded(); 608 player->OnKeyAdded();
609 } 609 }
610 610
611 void BrowserMediaPlayerManager::OnCancelKeyRequest( 611 void BrowserMediaPlayerManager::OnCancelKeyRequest(int media_keys_id,
612 int media_keys_id, 612 uint32 session_id) {
613 uint32 reference_id) {
614 MediaDrmBridge* drm_bridge = GetDrmBridge(media_keys_id); 613 MediaDrmBridge* drm_bridge = GetDrmBridge(media_keys_id);
615 if (!drm_bridge) { 614 if (!drm_bridge) {
616 DLOG(WARNING) << "No MediaDrmBridge for ID: " << media_keys_id << " found"; 615 DLOG(WARNING) << "No MediaDrmBridge for ID: " << media_keys_id << " found";
617 OnSessionError( 616 OnSessionError(
618 media_keys_id, reference_id, media::MediaKeys::kUnknownError, 0); 617 media_keys_id, session_id, media::MediaKeys::kUnknownError, 0);
619 return; 618 return;
620 } 619 }
621 620
622 drm_bridge->ReleaseSession(reference_id); 621 drm_bridge->ReleaseSession(session_id);
623 } 622 }
624 623
625 void BrowserMediaPlayerManager::AddPlayer(MediaPlayerAndroid* player) { 624 void BrowserMediaPlayerManager::AddPlayer(MediaPlayerAndroid* player) {
626 DCHECK(!GetPlayer(player->player_id())); 625 DCHECK(!GetPlayer(player->player_id()));
627 players_.push_back(player); 626 players_.push_back(player);
628 if (player->IsRemote()) { 627 if (player->IsRemote()) {
629 Send(new MediaPlayerMsg_ConnectedToRemoteDevice(routing_id(), 628 Send(new MediaPlayerMsg_ConnectedToRemoteDevice(routing_id(),
630 player->player_id())); 629 player->player_id()));
631 } 630 }
632 } 631 }
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 DVLOG(1) << "OnSetMediaKeys(): Player and MediaKeys must be present."; 708 DVLOG(1) << "OnSetMediaKeys(): Player and MediaKeys must be present.";
710 return; 709 return;
711 } 710 }
712 // TODO(qinmin): add the logic to decide whether we should create the 711 // TODO(qinmin): add the logic to decide whether we should create the
713 // fullscreen surface for EME lv1. 712 // fullscreen surface for EME lv1.
714 player->SetDrmBridge(drm_bridge); 713 player->SetDrmBridge(drm_bridge);
715 } 714 }
716 715
717 void BrowserMediaPlayerManager::GenerateKeyIfAllowed( 716 void BrowserMediaPlayerManager::GenerateKeyIfAllowed(
718 int media_keys_id, 717 int media_keys_id,
719 uint32 reference_id, 718 uint32 session_id,
720 const std::string& type, 719 const std::string& type,
721 const std::vector<uint8>& init_data, 720 const std::vector<uint8>& init_data,
722 bool allowed) { 721 bool allowed) {
723 if (!allowed) 722 if (!allowed)
724 return; 723 return;
725 724
726 MediaDrmBridge* drm_bridge = GetDrmBridge(media_keys_id); 725 MediaDrmBridge* drm_bridge = GetDrmBridge(media_keys_id);
727 if (!drm_bridge) { 726 if (!drm_bridge) {
728 DLOG(WARNING) << "No MediaDrmBridge for ID: " << media_keys_id << " found"; 727 DLOG(WARNING) << "No MediaDrmBridge for ID: " << media_keys_id << " found";
729 OnSessionError( 728 OnSessionError(
730 media_keys_id, reference_id, media::MediaKeys::kUnknownError, 0); 729 media_keys_id, session_id, media::MediaKeys::kUnknownError, 0);
731 return; 730 return;
732 } 731 }
733 media_keys_ids_pending_approval_.erase(media_keys_id); 732 media_keys_ids_pending_approval_.erase(media_keys_id);
734 media_keys_ids_approved_.insert(media_keys_id); 733 media_keys_ids_approved_.insert(media_keys_id);
735 drm_bridge->CreateSession( 734 drm_bridge->CreateSession(session_id, type, &init_data[0], init_data.size());
736 reference_id, type, &init_data[0], init_data.size());
737 735
738 // TODO(qinmin): currently |media_keys_id| and player ID are identical. 736 // TODO(qinmin): currently |media_keys_id| and player ID are identical.
739 // This might not be true in the future. 737 // This might not be true in the future.
740 if (pending_fullscreen_player_id_ != media_keys_id) 738 if (pending_fullscreen_player_id_ != media_keys_id)
741 return; 739 return;
742 740
743 pending_fullscreen_player_id_ = -1; 741 pending_fullscreen_player_id_ = -1;
744 MediaPlayerAndroid* player = GetPlayer(media_keys_id); 742 MediaPlayerAndroid* player = GetPlayer(media_keys_id);
745 if (player->IsPlaying()) 743 if (player->IsPlaying())
746 OnProtectedSurfaceRequested(media_keys_id); 744 OnProtectedSurfaceRequested(media_keys_id);
747 } 745 }
748 746
749 } // namespace content 747 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/media/android/browser_media_player_manager.h ('k') | content/common/media/media_player_messages_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698