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

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

Issue 308073004: Add PlayerTracker and BrowserCdm interfaces. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: minor fix Created 6 years, 6 months 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 | Annotate | Revision Log
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/android/scoped_java_ref.h" 7 #include "base/android/scoped_java_ref.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "content/browser/android/content_view_core_impl.h" 10 #include "content/browser/android/content_view_core_impl.h"
(...skipping 10 matching lines...) Expand all
21 #include "content/public/browser/render_frame_host.h" 21 #include "content/public/browser/render_frame_host.h"
22 #include "content/public/browser/render_process_host.h" 22 #include "content/public/browser/render_process_host.h"
23 #include "content/public/browser/render_view_host.h" 23 #include "content/public/browser/render_view_host.h"
24 #include "content/public/browser/storage_partition.h" 24 #include "content/public/browser/storage_partition.h"
25 #include "content/public/browser/web_contents.h" 25 #include "content/public/browser/web_contents.h"
26 #include "content/public/browser/web_contents_delegate.h" 26 #include "content/public/browser/web_contents_delegate.h"
27 #include "content/public/common/content_client.h" 27 #include "content/public/common/content_client.h"
28 #include "content/public/common/content_switches.h" 28 #include "content/public/common/content_switches.h"
29 #include "media/base/android/media_player_bridge.h" 29 #include "media/base/android/media_player_bridge.h"
30 #include "media/base/android/media_source_player.h" 30 #include "media/base/android/media_source_player.h"
31 #include "media/base/cdm_factory.h" 31 #include "media/base/browser_cdm.h"
32 #include "media/base/browser_cdm_factory.h"
32 #include "media/base/media_switches.h" 33 #include "media/base/media_switches.h"
33 34
35 using media::BrowserCdm;
34 using media::MediaKeys; 36 using media::MediaKeys;
35 using media::MediaPlayerAndroid; 37 using media::MediaPlayerAndroid;
36 using media::MediaPlayerBridge; 38 using media::MediaPlayerBridge;
37 using media::MediaPlayerManager; 39 using media::MediaPlayerManager;
38 using media::MediaSourcePlayer; 40 using media::MediaSourcePlayer;
39 41
40 namespace content { 42 namespace content {
41 43
42 // Threshold on the number of media players per renderer before we start 44 // Threshold on the number of media players per renderer before we start
43 // attempting to release inactive media players. 45 // attempting to release inactive media players.
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 312
311 MediaPlayerAndroid* BrowserMediaPlayerManager::GetPlayer(int player_id) { 313 MediaPlayerAndroid* BrowserMediaPlayerManager::GetPlayer(int player_id) {
312 for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin(); 314 for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin();
313 it != players_.end(); ++it) { 315 it != players_.end(); ++it) {
314 if ((*it)->player_id() == player_id) 316 if ((*it)->player_id() == player_id)
315 return *it; 317 return *it;
316 } 318 }
317 return NULL; 319 return NULL;
318 } 320 }
319 321
320 MediaKeys* BrowserMediaPlayerManager::GetCdm(int cdm_id) { 322 BrowserCdm* BrowserMediaPlayerManager::GetCdm(int cdm_id) {
321 CdmMap::const_iterator iter = cdm_map_.find(cdm_id); 323 CdmMap::const_iterator iter = cdm_map_.find(cdm_id);
322 return (iter == cdm_map_.end()) ? NULL : iter->second; 324 return (iter == cdm_map_.end()) ? NULL : iter->second;
323 } 325 }
324 326
325 void BrowserMediaPlayerManager::DestroyAllMediaPlayers() { 327 void BrowserMediaPlayerManager::DestroyAllMediaPlayers() {
326 players_.clear(); 328 players_.clear();
327 STLDeleteValues(&cdm_map_); 329 STLDeleteValues(&cdm_map_);
328 if (fullscreen_player_id_ != -1) { 330 if (fullscreen_player_id_ != -1) {
329 video_view_.reset(); 331 video_view_.reset();
330 fullscreen_player_id_ = -1; 332 fullscreen_player_id_ = -1;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 } 371 }
370 372
371 void BrowserMediaPlayerManager::OnSessionReady(int cdm_id, uint32 session_id) { 373 void BrowserMediaPlayerManager::OnSessionReady(int cdm_id, uint32 session_id) {
372 Send(new CdmMsg_SessionReady(RoutingID(), cdm_id, session_id)); 374 Send(new CdmMsg_SessionReady(RoutingID(), cdm_id, session_id));
373 } 375 }
374 376
375 void BrowserMediaPlayerManager::OnSessionClosed(int cdm_id, uint32 session_id) { 377 void BrowserMediaPlayerManager::OnSessionClosed(int cdm_id, uint32 session_id) {
376 Send(new CdmMsg_SessionClosed(RoutingID(), cdm_id, session_id)); 378 Send(new CdmMsg_SessionClosed(RoutingID(), cdm_id, session_id));
377 } 379 }
378 380
379 void BrowserMediaPlayerManager::OnSessionError( 381 void BrowserMediaPlayerManager::OnSessionError(int cdm_id,
380 int cdm_id, 382 uint32 session_id,
381 uint32 session_id, 383 MediaKeys::KeyError error_code,
ddorwin 2014/05/30 20:50:05 When BrowserCdm no longer inherits from MediaKeys,
xhwang 2014/06/02 20:11:43 Shall we put those errors in a common place? e.g.
ddorwin 2014/06/02 20:20:29 Maybe. That's how jrummel has them in the Blink CL
382 media::MediaKeys::KeyError error_code, 384 uint32 system_code) {
383 uint32 system_code) {
384 Send(new CdmMsg_SessionError( 385 Send(new CdmMsg_SessionError(
385 RoutingID(), cdm_id, session_id, error_code, system_code)); 386 RoutingID(), cdm_id, session_id, error_code, system_code));
386 } 387 }
387 388
388 #if defined(VIDEO_HOLE) 389 #if defined(VIDEO_HOLE)
389 void BrowserMediaPlayerManager::AttachExternalVideoSurface(int player_id, 390 void BrowserMediaPlayerManager::AttachExternalVideoSurface(int player_id,
390 jobject surface) { 391 jobject surface) {
391 MediaPlayerAndroid* player = GetPlayer(player_id); 392 MediaPlayerAndroid* player = GetPlayer(player_id);
392 if (player) { 393 if (player) {
393 player->SetVideoSurface( 394 player->SetVideoSurface(
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 } 570 }
570 571
571 void BrowserMediaPlayerManager::OnCreateSession( 572 void BrowserMediaPlayerManager::OnCreateSession(
572 int cdm_id, 573 int cdm_id,
573 uint32 session_id, 574 uint32 session_id,
574 CdmHostMsg_CreateSession_ContentType content_type, 575 CdmHostMsg_CreateSession_ContentType content_type,
575 const std::vector<uint8>& init_data) { 576 const std::vector<uint8>& init_data) {
576 if (init_data.size() > kMaxInitDataLength) { 577 if (init_data.size() > kMaxInitDataLength) {
577 LOG(WARNING) << "InitData for ID: " << cdm_id 578 LOG(WARNING) << "InitData for ID: " << cdm_id
578 << " too long: " << init_data.size(); 579 << " too long: " << init_data.size();
579 OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0); 580 OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
580 return; 581 return;
581 } 582 }
582 583
583 // Convert the session content type into a MIME type. "audio" and "video" 584 // Convert the session content type into a MIME type. "audio" and "video"
584 // don't matter, so using "video" for the MIME type. 585 // don't matter, so using "video" for the MIME type.
585 // Ref: 586 // Ref:
586 // https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypte d-media.html#dom-createsession 587 // https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypte d-media.html#dom-createsession
587 std::string mime_type; 588 std::string mime_type;
588 switch (content_type) { 589 switch (content_type) {
589 case CREATE_SESSION_TYPE_WEBM: 590 case CREATE_SESSION_TYPE_WEBM:
590 mime_type = "video/webm"; 591 mime_type = "video/webm";
591 break; 592 break;
592 case CREATE_SESSION_TYPE_MP4: 593 case CREATE_SESSION_TYPE_MP4:
593 mime_type = "video/mp4"; 594 mime_type = "video/mp4";
594 break; 595 break;
595 default: 596 default:
596 NOTREACHED(); 597 NOTREACHED();
597 return; 598 return;
598 } 599 }
599 600
600 if (CommandLine::ForCurrentProcess() 601 if (CommandLine::ForCurrentProcess()
601 ->HasSwitch(switches::kDisableInfobarForProtectedMediaIdentifier)) { 602 ->HasSwitch(switches::kDisableInfobarForProtectedMediaIdentifier)) {
602 CreateSessionIfPermitted(cdm_id, session_id, mime_type, init_data, true); 603 CreateSessionIfPermitted(cdm_id, session_id, mime_type, init_data, true);
603 return; 604 return;
604 } 605 }
605 606
606 MediaKeys* cdm = GetCdm(cdm_id); 607 BrowserCdm* cdm = GetCdm(cdm_id);
607 if (!cdm) { 608 if (!cdm) {
608 DLOG(WARNING) << "No CDM for ID " << cdm_id << " found"; 609 DLOG(WARNING) << "No CDM for ID " << cdm_id << " found";
609 OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0); 610 OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
610 return; 611 return;
611 } 612 }
612 613
613 BrowserContext* context = 614 BrowserContext* context =
614 web_contents()->GetRenderProcessHost()->GetBrowserContext(); 615 web_contents()->GetRenderProcessHost()->GetBrowserContext();
615 616
616 std::map<int, GURL>::const_iterator iter = 617 std::map<int, GURL>::const_iterator iter =
617 cdm_security_origin_map_.find(cdm_id); 618 cdm_security_origin_map_.find(cdm_id);
618 if (iter == cdm_security_origin_map_.end()) { 619 if (iter == cdm_security_origin_map_.end()) {
619 NOTREACHED(); 620 NOTREACHED();
620 OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0); 621 OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
621 return; 622 return;
622 } 623 }
623 624
624 context->RequestProtectedMediaIdentifierPermission( 625 context->RequestProtectedMediaIdentifierPermission(
625 web_contents()->GetRenderProcessHost()->GetID(), 626 web_contents()->GetRenderProcessHost()->GetID(),
626 web_contents()->GetRenderViewHost()->GetRoutingID(), 627 web_contents()->GetRenderViewHost()->GetRoutingID(),
627 iter->second, 628 iter->second,
628 base::Bind(&BrowserMediaPlayerManager::CreateSessionIfPermitted, 629 base::Bind(&BrowserMediaPlayerManager::CreateSessionIfPermitted,
629 weak_ptr_factory_.GetWeakPtr(), 630 weak_ptr_factory_.GetWeakPtr(),
630 cdm_id, 631 cdm_id,
631 session_id, 632 session_id,
632 mime_type, 633 mime_type,
633 init_data)); 634 init_data));
634 } 635 }
635 636
636 void BrowserMediaPlayerManager::OnUpdateSession( 637 void BrowserMediaPlayerManager::OnUpdateSession(
637 int cdm_id, 638 int cdm_id,
638 uint32 session_id, 639 uint32 session_id,
639 const std::vector<uint8>& response) { 640 const std::vector<uint8>& response) {
640 MediaKeys* cdm = GetCdm(cdm_id); 641 BrowserCdm* cdm = GetCdm(cdm_id);
641 if (!cdm) { 642 if (!cdm) {
642 DLOG(WARNING) << "No CDM for ID " << cdm_id << " found"; 643 DLOG(WARNING) << "No CDM for ID " << cdm_id << " found";
643 OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0); 644 OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
644 return; 645 return;
645 } 646 }
646 647
647 if (response.size() > kMaxSessionResponseLength) { 648 if (response.size() > kMaxSessionResponseLength) {
648 LOG(WARNING) << "Response for ID " << cdm_id 649 LOG(WARNING) << "Response for ID " << cdm_id
649 << " is too long: " << response.size(); 650 << " is too long: " << response.size();
650 OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0); 651 OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
651 return; 652 return;
652 } 653 }
653 654
654 cdm->UpdateSession(session_id, &response[0], response.size()); 655 cdm->UpdateSession(session_id, &response[0], response.size());
655
656 CdmToPlayerMap::const_iterator iter = cdm_to_player_map_.find(cdm_id);
657 if (iter == cdm_to_player_map_.end())
658 return;
659
660 int player_id = iter->second;
661 MediaPlayerAndroid* player = GetPlayer(player_id);
662 if (player)
663 player->OnKeyAdded();
664 } 656 }
665 657
666 void BrowserMediaPlayerManager::OnReleaseSession(int cdm_id, 658 void BrowserMediaPlayerManager::OnReleaseSession(int cdm_id,
667 uint32 session_id) { 659 uint32 session_id) {
668 MediaKeys* cdm = GetCdm(cdm_id); 660 BrowserCdm* cdm = GetCdm(cdm_id);
669 if (!cdm) { 661 if (!cdm) {
670 DLOG(WARNING) << "No CDM for ID " << cdm_id << " found"; 662 DLOG(WARNING) << "No CDM for ID " << cdm_id << " found";
671 OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0); 663 OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
672 return; 664 return;
673 } 665 }
674 666
675 cdm->ReleaseSession(session_id); 667 cdm->ReleaseSession(session_id);
676 } 668 }
677 669
678 void BrowserMediaPlayerManager::OnDestroyCdm(int cdm_id) { 670 void BrowserMediaPlayerManager::OnDestroyCdm(int cdm_id) {
679 MediaKeys* cdm = GetCdm(cdm_id); 671 BrowserCdm* cdm = GetCdm(cdm_id);
680 if (!cdm) 672 if (!cdm)
681 return; 673 return;
682 674
683 CancelAllPendingSessionCreations(cdm_id); 675 CancelAllPendingSessionCreations(cdm_id);
684 RemoveCdm(cdm_id); 676 RemoveCdm(cdm_id);
685 } 677 }
686 678
687 void BrowserMediaPlayerManager::CancelAllPendingSessionCreations(int cdm_id) { 679 void BrowserMediaPlayerManager::CancelAllPendingSessionCreations(int cdm_id) {
688 BrowserContext* context = 680 BrowserContext* context =
689 web_contents()->GetRenderProcessHost()->GetBrowserContext(); 681 web_contents()->GetRenderProcessHost()->GetBrowserContext();
(...skipping 14 matching lines...) Expand all
704 696
705 void BrowserMediaPlayerManager::RemovePlayer(int player_id) { 697 void BrowserMediaPlayerManager::RemovePlayer(int player_id) {
706 for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin(); 698 for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin();
707 it != players_.end(); ++it) { 699 it != players_.end(); ++it) {
708 MediaPlayerAndroid* player = *it; 700 MediaPlayerAndroid* player = *it;
709 if (player->player_id() == player_id) { 701 if (player->player_id() == player_id) {
710 players_.erase(it); 702 players_.erase(it);
711 break; 703 break;
712 } 704 }
713 } 705 }
714
715 for (CdmToPlayerMap::iterator it = cdm_to_player_map_.begin();
716 it != cdm_to_player_map_.end();
717 ++it) {
718 if (it->second == player_id) {
719 cdm_to_player_map_.erase(it);
720 break;
721 }
722 }
723 } 706 }
724 707
725 scoped_ptr<media::MediaPlayerAndroid> BrowserMediaPlayerManager::SwapPlayer( 708 scoped_ptr<media::MediaPlayerAndroid> BrowserMediaPlayerManager::SwapPlayer(
726 int player_id, media::MediaPlayerAndroid* player) { 709 int player_id, media::MediaPlayerAndroid* player) {
727 media::MediaPlayerAndroid* previous_player = NULL; 710 media::MediaPlayerAndroid* previous_player = NULL;
728 for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin(); 711 for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin();
729 it != players_.end(); ++it) { 712 it != players_.end(); ++it) {
730 if ((*it)->player_id() == player_id) { 713 if ((*it)->player_id() == player_id) {
731 previous_player = *it; 714 previous_player = *it;
732 players_.weak_erase(it); 715 players_.weak_erase(it);
733 players_.push_back(player); 716 players_.push_back(player);
734 break; 717 break;
735 } 718 }
736 } 719 }
737 return scoped_ptr<media::MediaPlayerAndroid>(previous_player); 720 return scoped_ptr<media::MediaPlayerAndroid>(previous_player);
738 } 721 }
739 722
740 void BrowserMediaPlayerManager::AddCdm(int cdm_id, 723 void BrowserMediaPlayerManager::AddCdm(int cdm_id,
741 const std::string& key_system, 724 const std::string& key_system,
742 const GURL& security_origin) { 725 const GURL& security_origin) {
743 DCHECK(!GetCdm(cdm_id)); 726 DCHECK(!GetCdm(cdm_id));
744 base::WeakPtr<BrowserMediaPlayerManager> weak_this = 727 base::WeakPtr<BrowserMediaPlayerManager> weak_this =
745 weak_ptr_factory_.GetWeakPtr(); 728 weak_ptr_factory_.GetWeakPtr();
746 729
747 scoped_ptr<MediaKeys> cdm(media::CreateBrowserCdm( 730 const int& id = cdm_id;
ddorwin 2014/05/30 20:50:05 nit: I think we usually just copy the value. The c
xhwang 2014/06/02 20:11:43 Done.
731 scoped_ptr<BrowserCdm> cdm(media::CreateBrowserCdm(
748 key_system, 732 key_system,
749 base::Bind( 733 base::Bind(&BrowserMediaPlayerManager::OnSessionCreated, weak_this, id),
750 &BrowserMediaPlayerManager::OnSessionCreated, weak_this, cdm_id), 734 base::Bind(&BrowserMediaPlayerManager::OnSessionMessage, weak_this, id),
751 base::Bind( 735 base::Bind(&BrowserMediaPlayerManager::OnSessionReady, weak_this, id),
752 &BrowserMediaPlayerManager::OnSessionMessage, weak_this, cdm_id), 736 base::Bind(&BrowserMediaPlayerManager::OnSessionClosed, weak_this, id),
753 base::Bind( 737 base::Bind(&BrowserMediaPlayerManager::OnSessionError, weak_this, id)));
754 &BrowserMediaPlayerManager::OnSessionReady, weak_this, cdm_id),
755 base::Bind(
756 &BrowserMediaPlayerManager::OnSessionClosed, weak_this, cdm_id),
757 base::Bind(
758 &BrowserMediaPlayerManager::OnSessionError, weak_this, cdm_id)));
759 738
760 if (!cdm) { 739 if (!cdm) {
761 // This failure will be discovered and reported by OnCreateSession() 740 // This failure will be discovered and reported by OnCreateSession()
762 // as GetCdm() will return null. 741 // as GetCdm() will return null.
763 DVLOG(1) << "failed to create CDM."; 742 DVLOG(1) << "failed to create CDM.";
764 return; 743 return;
765 } 744 }
766 745
767 cdm_map_[cdm_id] = cdm.release(); 746 cdm_map_[cdm_id] = cdm.release();
768 cdm_security_origin_map_[cdm_id] = security_origin; 747 cdm_security_origin_map_[cdm_id] = security_origin;
769 } 748 }
770 749
771 void BrowserMediaPlayerManager::RemoveCdm(int cdm_id) { 750 void BrowserMediaPlayerManager::RemoveCdm(int cdm_id) {
772 // TODO(xhwang): Detach CDM from the player it's set to. In prefixed 751 // TODO(xhwang): Detach CDM from the player it's set to. In prefixed
773 // EME implementation the current code is fine because we always destroy the 752 // EME implementation the current code is fine because we always destroy the
774 // player before we destroy the DrmBridge. This will not always be the case 753 // player before we destroy the DrmBridge. This will not always be the case
775 // in unprefixed EME implementation. 754 // in unprefixed EME implementation.
776 CdmMap::iterator iter = cdm_map_.find(cdm_id); 755 CdmMap::iterator iter = cdm_map_.find(cdm_id);
777 if (iter != cdm_map_.end()) { 756 if (iter != cdm_map_.end()) {
778 delete iter->second; 757 delete iter->second;
779 cdm_map_.erase(iter); 758 cdm_map_.erase(iter);
780 } 759 }
781 cdm_to_player_map_.erase(cdm_id);
782 cdm_security_origin_map_.erase(cdm_id); 760 cdm_security_origin_map_.erase(cdm_id);
783 } 761 }
784 762
785 void BrowserMediaPlayerManager::OnSetCdm(int player_id, int cdm_id) { 763 void BrowserMediaPlayerManager::OnSetCdm(int player_id, int cdm_id) {
786 MediaPlayerAndroid* player = GetPlayer(player_id); 764 MediaPlayerAndroid* player = GetPlayer(player_id);
787 MediaKeys* cdm = GetCdm(cdm_id); 765 BrowserCdm* cdm = GetCdm(cdm_id);
766 // Currently we do not support detaching CDM from a player.
ddorwin 2014/05/30 20:50:05 Is this prevented by Blink? If so, DCHECK()? If no
xhwang 2014/06/02 20:11:43 This is prevented by the WMPA. Added NOT_REACHED.
788 if (!cdm || !player) { 767 if (!cdm || !player) {
789 DVLOG(1) << "Cannot set CDM on the specified player."; 768 DVLOG(1) << "Cannot set CDM on the specified player.";
790 return; 769 return;
791 } 770 }
792 771
793 // TODO(qinmin): add the logic to decide whether we should create the 772 // TODO(qinmin): add the logic to decide whether we should create the
794 // fullscreen surface for EME lv1. 773 // fullscreen surface for EME lv1.
795 player->SetCdm(cdm); 774 player->SetCdm(cdm);
796 // Do now support setting one CDM on multiple players.
797
798 if (ContainsKey(cdm_to_player_map_, cdm_id)) {
799 DVLOG(1) << "CDM is already set on another player.";
800 return;
801 }
802
803 cdm_to_player_map_[cdm_id] = player_id;
804 } 775 }
805 776
806 int BrowserMediaPlayerManager::RoutingID() { 777 int BrowserMediaPlayerManager::RoutingID() {
807 return render_frame_host_->GetRoutingID(); 778 return render_frame_host_->GetRoutingID();
808 } 779 }
809 780
810 bool BrowserMediaPlayerManager::Send(IPC::Message* msg) { 781 bool BrowserMediaPlayerManager::Send(IPC::Message* msg) {
811 return render_frame_host_->Send(msg); 782 return render_frame_host_->Send(msg);
812 } 783 }
813 784
814 void BrowserMediaPlayerManager::CreateSessionIfPermitted( 785 void BrowserMediaPlayerManager::CreateSessionIfPermitted(
815 int cdm_id, 786 int cdm_id,
816 uint32 session_id, 787 uint32 session_id,
817 const std::string& content_type, 788 const std::string& content_type,
818 const std::vector<uint8>& init_data, 789 const std::vector<uint8>& init_data,
819 bool permitted) { 790 bool permitted) {
820 if (!permitted) { 791 if (!permitted) {
821 OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0); 792 OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
822 return; 793 return;
823 } 794 }
824 795
825 MediaKeys* cdm = GetCdm(cdm_id); 796 BrowserCdm* cdm = GetCdm(cdm_id);
826 if (!cdm) { 797 if (!cdm) {
827 DLOG(WARNING) << "No CDM for ID: " << cdm_id << " found"; 798 DLOG(WARNING) << "No CDM for ID: " << cdm_id << " found";
828 OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0); 799 OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
829 return; 800 return;
830 } 801 }
831 802
832 // This could fail, in which case a SessionError will be fired. 803 // This could fail, in which case a SessionError will be fired.
833 cdm->CreateSession(session_id, content_type, &init_data[0], init_data.size()); 804 cdm->CreateSession(session_id, content_type, &init_data[0], init_data.size());
834 } 805 }
835 806
836 void BrowserMediaPlayerManager::ReleaseFullscreenPlayer( 807 void BrowserMediaPlayerManager::ReleaseFullscreenPlayer(
837 MediaPlayerAndroid* player) { 808 MediaPlayerAndroid* player) {
838 player->Release(); 809 player->Release();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 #if defined(VIDEO_HOLE) 841 #if defined(VIDEO_HOLE)
871 MediaPlayerAndroid* player = GetPlayer(player_id); 842 MediaPlayerAndroid* player = GetPlayer(player_id);
872 if (player && player->IsSurfaceInUse()) 843 if (player && player->IsSurfaceInUse())
873 return; 844 return;
874 if (external_video_surface_container_) 845 if (external_video_surface_container_)
875 external_video_surface_container_->ReleaseExternalVideoSurface(player_id); 846 external_video_surface_container_->ReleaseExternalVideoSurface(player_id);
876 #endif // defined(VIDEO_HOLE) 847 #endif // defined(VIDEO_HOLE)
877 } 848 }
878 849
879 } // namespace content 850 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698