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

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

Issue 534063002: Remove OnMediaResourcesReleased callback passed to MediaPlayerAndroid (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
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 "content/browser/android/content_view_core_impl.h" 9 #include "content/browser/android/content_view_core_impl.h"
10 #include "content/browser/media/android/browser_demuxer_android.h" 10 #include "content/browser/media/android/browser_demuxer_android.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 const std::string user_agent = GetContentClient()->GetUserAgent(); 76 const std::string user_agent = GetContentClient()->GetUserAgent();
77 MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge( 77 MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge(
78 media_player_params.player_id, 78 media_player_params.player_id,
79 media_player_params.url, 79 media_player_params.url,
80 media_player_params.first_party_for_cookies, 80 media_player_params.first_party_for_cookies,
81 user_agent, 81 user_agent,
82 hide_url_log, 82 hide_url_log,
83 manager, 83 manager,
84 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, 84 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested,
85 weak_ptr_factory_.GetWeakPtr()), 85 weak_ptr_factory_.GetWeakPtr()),
86 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesReleased,
87 weak_ptr_factory_.GetWeakPtr()),
88 media_player_params.frame_url, 86 media_player_params.frame_url,
89 media_player_params.allow_credentials); 87 media_player_params.allow_credentials);
90 BrowserMediaPlayerManager* browser_media_player_manager = 88 BrowserMediaPlayerManager* browser_media_player_manager =
91 static_cast<BrowserMediaPlayerManager*>(manager); 89 static_cast<BrowserMediaPlayerManager*>(manager);
92 ContentViewCoreImpl* content_view_core_impl = 90 ContentViewCoreImpl* content_view_core_impl =
93 static_cast<ContentViewCoreImpl*>(ContentViewCore::FromWebContents( 91 static_cast<ContentViewCoreImpl*>(ContentViewCore::FromWebContents(
94 browser_media_player_manager->web_contents_)); 92 browser_media_player_manager->web_contents_));
95 if (!content_view_core_impl) { 93 if (!content_view_core_impl) {
96 // May reach here due to prerendering. Don't extract the metadata 94 // May reach here due to prerendering. Don't extract the metadata
97 // since it is expensive. 95 // since it is expensive.
98 // TODO(qinmin): extract the metadata once the user decided to load 96 // TODO(qinmin): extract the metadata once the user decided to load
99 // the page. 97 // the page.
100 browser_media_player_manager->OnMediaMetadataChanged( 98 browser_media_player_manager->OnMediaMetadataChanged(
101 media_player_params.player_id, base::TimeDelta(), 0, 0, false); 99 media_player_params.player_id, base::TimeDelta(), 0, 0, false);
102 } else if (!content_view_core_impl->ShouldBlockMediaRequest( 100 } else if (!content_view_core_impl->ShouldBlockMediaRequest(
103 media_player_params.url)) { 101 media_player_params.url)) {
104 media_player_bridge->Initialize(); 102 media_player_bridge->Initialize();
105 } 103 }
106 return media_player_bridge; 104 return media_player_bridge;
107 } 105 }
108 106
109 case MEDIA_PLAYER_TYPE_MEDIA_SOURCE: { 107 case MEDIA_PLAYER_TYPE_MEDIA_SOURCE: {
110 return new MediaSourcePlayer( 108 return new MediaSourcePlayer(
111 media_player_params.player_id, 109 media_player_params.player_id,
112 manager, 110 manager,
113 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, 111 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested,
114 weak_ptr_factory_.GetWeakPtr()), 112 weak_ptr_factory_.GetWeakPtr()),
115 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesReleased,
116 weak_ptr_factory_.GetWeakPtr()),
117 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), 113 demuxer->CreateDemuxer(media_player_params.demuxer_client_id),
118 media_player_params.frame_url); 114 media_player_params.frame_url);
119 } 115 }
120 } 116 }
121 117
122 NOTREACHED(); 118 NOTREACHED();
123 return NULL; 119 return NULL;
124 } 120 }
125 121
126 BrowserMediaPlayerManager::BrowserMediaPlayerManager( 122 BrowserMediaPlayerManager::BrowserMediaPlayerManager(
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 if (player) 487 if (player)
492 player->SetVolume(volume); 488 player->SetVolume(volume);
493 } 489 }
494 490
495 void BrowserMediaPlayerManager::OnSetPoster(int player_id, const GURL& url) { 491 void BrowserMediaPlayerManager::OnSetPoster(int player_id, const GURL& url) {
496 // To be overridden by subclasses. 492 // To be overridden by subclasses.
497 } 493 }
498 494
499 void BrowserMediaPlayerManager::OnReleaseResources(int player_id) { 495 void BrowserMediaPlayerManager::OnReleaseResources(int player_id) {
500 MediaPlayerAndroid* player = GetPlayer(player_id); 496 MediaPlayerAndroid* player = GetPlayer(player_id);
501 if (player) 497 if (player) {
502 player->Release(); 498 player->Release();
499 OnMediaResourcesReleased(player_id);
500 }
503 if (player_id == fullscreen_player_id_) 501 if (player_id == fullscreen_player_id_)
504 fullscreen_player_is_released_ = true; 502 fullscreen_player_is_released_ = true;
505 } 503 }
506 504
507 void BrowserMediaPlayerManager::OnDestroyPlayer(int player_id) { 505 void BrowserMediaPlayerManager::OnDestroyPlayer(int player_id) {
508 RemovePlayer(player_id); 506 RemovePlayer(player_id);
509 if (fullscreen_player_id_ == player_id) 507 if (fullscreen_player_id_ == player_id)
510 fullscreen_player_id_ = -1; 508 fullscreen_player_id_ = -1;
511 } 509 }
512 510
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 int BrowserMediaPlayerManager::RoutingID() { 542 int BrowserMediaPlayerManager::RoutingID() {
545 return render_frame_host_->GetRoutingID(); 543 return render_frame_host_->GetRoutingID();
546 } 544 }
547 545
548 bool BrowserMediaPlayerManager::Send(IPC::Message* msg) { 546 bool BrowserMediaPlayerManager::Send(IPC::Message* msg) {
549 return render_frame_host_->Send(msg); 547 return render_frame_host_->Send(msg);
550 } 548 }
551 549
552 void BrowserMediaPlayerManager::ReleaseFullscreenPlayer( 550 void BrowserMediaPlayerManager::ReleaseFullscreenPlayer(
553 MediaPlayerAndroid* player) { 551 MediaPlayerAndroid* player) {
554 player->Release(); 552 player->Release();
553 OnMediaResourcesReleased(player->player_id());
555 } 554 }
556 555
557 void BrowserMediaPlayerManager::OnMediaResourcesRequested(int player_id) { 556 void BrowserMediaPlayerManager::OnMediaResourcesRequested(int player_id) {
558 int num_active_player = 0; 557 int num_active_player = 0;
559 ScopedVector<MediaPlayerAndroid>::iterator it; 558 ScopedVector<MediaPlayerAndroid>::iterator it;
560 for (it = players_.begin(); it != players_.end(); ++it) { 559 for (it = players_.begin(); it != players_.end(); ++it) {
561 if (!(*it)->IsPlayerReady()) 560 if (!(*it)->IsPlayerReady())
562 continue; 561 continue;
563 562
564 // The player is already active, ignore it. 563 // The player is already active, ignore it.
565 if ((*it)->player_id() == player_id) 564 if ((*it)->player_id() == player_id)
566 return; 565 return;
567 else 566 else
568 num_active_player++; 567 num_active_player++;
569 } 568 }
570 569
571 // Number of active players are less than the threshold, do nothing. 570 // Number of active players are less than the threshold, do nothing.
572 if (num_active_player < kMediaPlayerThreshold) 571 if (num_active_player < kMediaPlayerThreshold)
573 return; 572 return;
574 573
575 for (it = players_.begin(); it != players_.end(); ++it) { 574 for (it = players_.begin(); it != players_.end(); ++it) {
576 if ((*it)->IsPlayerReady() && !(*it)->IsPlaying() && 575 if ((*it)->IsPlayerReady() && !(*it)->IsPlaying() &&
577 fullscreen_player_id_ != (*it)->player_id()) { 576 fullscreen_player_id_ != (*it)->player_id()) {
578 (*it)->Release(); 577 (*it)->Release();
578 OnMediaResourcesReleased(player_id);
xhwang 2014/09/03 16:36:58 This pattern appeared 3 times: player->Release();
qinmin 2014/09/03 18:27:52 Done.
579 Send(new MediaPlayerMsg_MediaPlayerReleased(RoutingID(), 579 Send(new MediaPlayerMsg_MediaPlayerReleased(RoutingID(),
580 (*it)->player_id())); 580 (*it)->player_id()));
581 } 581 }
582 } 582 }
583 } 583 }
584 584
585 void BrowserMediaPlayerManager::OnMediaResourcesReleased(int player_id) { 585 void BrowserMediaPlayerManager::OnMediaResourcesReleased(int player_id) {
586 #if defined(VIDEO_HOLE) 586 #if defined(VIDEO_HOLE)
587 MediaPlayerAndroid* player = GetPlayer(player_id); 587 MediaPlayerAndroid* player = GetPlayer(player_id);
588 if (player && player->IsSurfaceInUse()) 588 if (player && player->IsSurfaceInUse())
589 return; 589 return;
590 if (external_video_surface_container_) 590 if (external_video_surface_container_)
591 external_video_surface_container_->ReleaseExternalVideoSurface(player_id); 591 external_video_surface_container_->ReleaseExternalVideoSurface(player_id);
592 #endif // defined(VIDEO_HOLE) 592 #endif // defined(VIDEO_HOLE)
593 } 593 }
594 594
595 } // namespace content 595 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698