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

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

Issue 1131793004: Migrate AudioFocusChangeListener to browser and always send GAIN (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: webview suggestions from boliu Created 5 years, 7 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/android/media_players_observer.h" 10 #include "content/browser/android/media_players_observer.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 129
130 BrowserMediaPlayerManager::BrowserMediaPlayerManager( 130 BrowserMediaPlayerManager::BrowserMediaPlayerManager(
131 RenderFrameHost* render_frame_host, 131 RenderFrameHost* render_frame_host,
132 MediaPlayersObserver* audio_monitor) 132 MediaPlayersObserver* audio_monitor)
133 : render_frame_host_(render_frame_host), 133 : render_frame_host_(render_frame_host),
134 audio_monitor_(audio_monitor), 134 audio_monitor_(audio_monitor),
135 fullscreen_player_id_(kInvalidMediaPlayerId), 135 fullscreen_player_id_(kInvalidMediaPlayerId),
136 fullscreen_player_is_released_(false), 136 fullscreen_player_is_released_(false),
137 web_contents_(WebContents::FromRenderFrameHost(render_frame_host)), 137 web_contents_(WebContents::FromRenderFrameHost(render_frame_host)),
138 weak_ptr_factory_(this) { 138 weak_ptr_factory_(this) {
139 audio_focus_manager_.reset(new AudioFocusManager(
140 base::MessageLoopProxy::current(), weak_ptr_factory_.GetWeakPtr()));
139 } 141 }
140 142
141 BrowserMediaPlayerManager::~BrowserMediaPlayerManager() { 143 BrowserMediaPlayerManager::~BrowserMediaPlayerManager() {
142 // During the tear down process, OnDestroyPlayer() may or may not be called 144 // During the tear down process, OnDestroyPlayer() may or may not be called
143 // (e.g. the WebContents may be destroyed before the render process). So 145 // (e.g. the WebContents may be destroyed before the render process). So
144 // we cannot DCHECK(players_.empty()) here. Instead, all media players in 146 // we cannot DCHECK(players_.empty()) here. Instead, all media players in
145 // |players_| will be destroyed here because |player_| is a ScopedVector. 147 // |players_| will be destroyed here because |player_| is a ScopedVector.
146 } 148 }
147 149
148 void BrowserMediaPlayerManager::ExitFullscreen(bool release_media_player) { 150 void BrowserMediaPlayerManager::ExitFullscreen(bool release_media_player) {
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 int player_id, 234 int player_id,
233 const base::TimeDelta& time_to_seek) { 235 const base::TimeDelta& time_to_seek) {
234 Send(new MediaPlayerMsg_SeekRequest(RoutingID(), player_id, time_to_seek)); 236 Send(new MediaPlayerMsg_SeekRequest(RoutingID(), player_id, time_to_seek));
235 } 237 }
236 238
237 void BrowserMediaPlayerManager::ReleaseAllMediaPlayers() { 239 void BrowserMediaPlayerManager::ReleaseAllMediaPlayers() {
238 for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin(); 240 for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin();
239 it != players_.end(); ++it) { 241 it != players_.end(); ++it) {
240 if ((*it)->player_id() == fullscreen_player_id_) 242 if ((*it)->player_id() == fullscreen_player_id_)
241 fullscreen_player_is_released_ = true; 243 fullscreen_player_is_released_ = true;
244 audio_focus_manager_->AbandonAudioFocus((*it)->player_id());
242 (*it)->Release(); 245 (*it)->Release();
243 } 246 }
244 } 247 }
245 248
246 void BrowserMediaPlayerManager::OnSeekComplete( 249 void BrowserMediaPlayerManager::OnSeekComplete(
247 int player_id, 250 int player_id,
248 const base::TimeDelta& current_time) { 251 const base::TimeDelta& current_time) {
249 Send(new MediaPlayerMsg_SeekCompleted(RoutingID(), player_id, current_time)); 252 Send(new MediaPlayerMsg_SeekCompleted(RoutingID(), player_id, current_time));
250 } 253 }
251 254
252 void BrowserMediaPlayerManager::OnError(int player_id, int error) { 255 void BrowserMediaPlayerManager::OnError(int player_id, int error) {
253 Send(new MediaPlayerMsg_MediaError(RoutingID(), player_id, error)); 256 Send(new MediaPlayerMsg_MediaError(RoutingID(), player_id, error));
254 if (fullscreen_player_id_ == player_id) 257 if (fullscreen_player_id_ == player_id)
255 video_view_->OnMediaPlayerError(error); 258 video_view_->OnMediaPlayerError(error);
259 audio_focus_manager_->AbandonAudioFocus(player_id);
256 } 260 }
257 261
258 void BrowserMediaPlayerManager::OnVideoSizeChanged( 262 void BrowserMediaPlayerManager::OnVideoSizeChanged(
259 int player_id, int width, int height) { 263 int player_id, int width, int height) {
260 Send(new MediaPlayerMsg_MediaVideoSizeChanged(RoutingID(), player_id, 264 Send(new MediaPlayerMsg_MediaVideoSizeChanged(RoutingID(), player_id,
261 width, height)); 265 width, height));
262 if (fullscreen_player_id_ == player_id) 266 if (fullscreen_player_id_ == player_id)
263 video_view_->OnVideoSizeChanged(width, height); 267 video_view_->OnVideoSizeChanged(width, height);
264 } 268 }
265 269
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 return; 462 return;
459 463
460 AddPlayer(player); 464 AddPlayer(player);
461 } 465 }
462 466
463 void BrowserMediaPlayerManager::OnStart(int player_id) { 467 void BrowserMediaPlayerManager::OnStart(int player_id) {
464 MediaPlayerAndroid* player = GetPlayer(player_id); 468 MediaPlayerAndroid* player = GetPlayer(player_id);
465 if (!player) 469 if (!player)
466 return; 470 return;
467 player->Start(); 471 player->Start();
472 audio_focus_manager_->RequestAudioFocus(player_id);
468 if (fullscreen_player_id_ == player_id && fullscreen_player_is_released_) { 473 if (fullscreen_player_id_ == player_id && fullscreen_player_is_released_) {
469 video_view_->OpenVideo(); 474 video_view_->OpenVideo();
470 fullscreen_player_is_released_ = false; 475 fullscreen_player_is_released_ = false;
471 } 476 }
472 } 477 }
473 478
474 void BrowserMediaPlayerManager::OnSeek( 479 void BrowserMediaPlayerManager::OnSeek(
475 int player_id, 480 int player_id,
476 const base::TimeDelta& time) { 481 const base::TimeDelta& time) {
477 MediaPlayerAndroid* player = GetPlayer(player_id); 482 MediaPlayerAndroid* player = GetPlayer(player_id);
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 (*it)->player_id())); 597 (*it)->player_id()));
593 } 598 }
594 } 599 }
595 } 600 }
596 601
597 void BrowserMediaPlayerManager::ReleaseMediaResources(int player_id) { 602 void BrowserMediaPlayerManager::ReleaseMediaResources(int player_id) {
598 #if defined(VIDEO_HOLE) 603 #if defined(VIDEO_HOLE)
599 if (external_video_surface_container_) 604 if (external_video_surface_container_)
600 external_video_surface_container_->ReleaseExternalVideoSurface(player_id); 605 external_video_surface_container_->ReleaseExternalVideoSurface(player_id);
601 #endif // defined(VIDEO_HOLE) 606 #endif // defined(VIDEO_HOLE)
607 audio_focus_manager_->AbandonAudioFocus(player_id);
602 } 608 }
603 609
604 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) { 610 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) {
605 player->Release(); 611 player->Release();
606 ReleaseMediaResources(player->player_id()); 612 ReleaseMediaResources(player->player_id());
607 } 613 }
608 614
609 } // namespace content 615 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/media/android/browser_media_player_manager.h ('k') | content/content_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698