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

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

Issue 103583005: Restart fullscreen video playback when switching back from background (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removed one more buggy line and the fullscreen_player_is_released_ member which is not necessary now 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 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 NOTREACHED(); 93 NOTREACHED();
94 return NULL; 94 return NULL;
95 } 95 }
96 #endif 96 #endif
97 97
98 BrowserMediaPlayerManager::BrowserMediaPlayerManager( 98 BrowserMediaPlayerManager::BrowserMediaPlayerManager(
99 RenderViewHost* render_view_host) 99 RenderViewHost* render_view_host)
100 : WebContentsObserver(WebContents::FromRenderViewHost(render_view_host)), 100 : WebContentsObserver(WebContents::FromRenderViewHost(render_view_host)),
101 fullscreen_player_id_(-1), 101 fullscreen_player_id_(-1),
102 pending_fullscreen_player_id_(-1), 102 pending_fullscreen_player_id_(-1),
103 fullscreen_player_is_released_(false),
104 web_contents_(WebContents::FromRenderViewHost(render_view_host)), 103 web_contents_(WebContents::FromRenderViewHost(render_view_host)),
105 weak_ptr_factory_(this) { 104 weak_ptr_factory_(this) {
106 } 105 }
107 106
108 BrowserMediaPlayerManager::~BrowserMediaPlayerManager() {} 107 BrowserMediaPlayerManager::~BrowserMediaPlayerManager() {}
109 108
110 bool BrowserMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) { 109 bool BrowserMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) {
111 bool handled = true; 110 bool handled = true;
112 IPC_BEGIN_MESSAGE_MAP(BrowserMediaPlayerManager, msg) 111 IPC_BEGIN_MESSAGE_MAP(BrowserMediaPlayerManager, msg)
113 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_EnterFullscreen, OnEnterFullscreen) 112 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_EnterFullscreen, OnEnterFullscreen)
(...skipping 19 matching lines...) Expand all
133 OnNotifyExternalSurface) 132 OnNotifyExternalSurface)
134 #endif 133 #endif
135 IPC_MESSAGE_UNHANDLED(handled = false) 134 IPC_MESSAGE_UNHANDLED(handled = false)
136 IPC_END_MESSAGE_MAP() 135 IPC_END_MESSAGE_MAP()
137 return handled; 136 return handled;
138 } 137 }
139 138
140 void BrowserMediaPlayerManager::FullscreenPlayerPlay() { 139 void BrowserMediaPlayerManager::FullscreenPlayerPlay() {
141 MediaPlayerAndroid* player = GetFullscreenPlayer(); 140 MediaPlayerAndroid* player = GetFullscreenPlayer();
142 if (player) { 141 if (player) {
143 if (fullscreen_player_is_released_) {
144 video_view_->OpenVideo();
145 fullscreen_player_is_released_ = false;
146 }
147 player->Start(); 142 player->Start();
148 Send(new MediaPlayerMsg_DidMediaPlayerPlay( 143 Send(new MediaPlayerMsg_DidMediaPlayerPlay(
149 routing_id(), fullscreen_player_id_)); 144 routing_id(), fullscreen_player_id_));
150 } 145 }
151 } 146 }
152 147
153 void BrowserMediaPlayerManager::FullscreenPlayerPause() { 148 void BrowserMediaPlayerManager::FullscreenPlayerPause() {
154 MediaPlayerAndroid* player = GetFullscreenPlayer(); 149 MediaPlayerAndroid* player = GetFullscreenPlayer();
155 if (player) { 150 if (player) {
156 player->Pause(true); 151 player->Pause(true);
157 Send(new MediaPlayerMsg_DidMediaPlayerPause( 152 Send(new MediaPlayerMsg_DidMediaPlayerPause(
158 routing_id(), fullscreen_player_id_)); 153 routing_id(), fullscreen_player_id_));
159 } 154 }
160 } 155 }
161 156
162 void BrowserMediaPlayerManager::FullscreenPlayerSeek(int msec) { 157 void BrowserMediaPlayerManager::FullscreenPlayerSeek(int msec) {
163 MediaPlayerAndroid* player = GetFullscreenPlayer(); 158 MediaPlayerAndroid* player = GetFullscreenPlayer();
164 if (player) { 159 if (player) {
165 // TODO(kbalazs): if |fullscreen_player_is_released_| is true 160 // TODO(kbalazs): if the fullscreen player has been Release()-d and
166 // at this point, player->GetCurrentTime() will be wrong until 161 // not restarted yet, player->GetCurrentTime() will be wrong until
167 // FullscreenPlayerPlay (http://crbug.com/322798). 162 // FullscreenPlayerPlay (http://crbug.com/322798).
168 OnSeekRequest(fullscreen_player_id_, 163 OnSeekRequest(fullscreen_player_id_,
169 base::TimeDelta::FromMilliseconds(msec)); 164 base::TimeDelta::FromMilliseconds(msec));
170 } 165 }
171 } 166 }
172 167
173 void BrowserMediaPlayerManager::ExitFullscreen(bool release_media_player) { 168 void BrowserMediaPlayerManager::ExitFullscreen(bool release_media_player) {
174 Send(new MediaPlayerMsg_DidExitFullscreen( 169 Send(new MediaPlayerMsg_DidExitFullscreen(
175 routing_id(), fullscreen_player_id_)); 170 routing_id(), fullscreen_player_id_));
176 video_view_.reset(); 171 video_view_.reset();
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 void BrowserMediaPlayerManager::OnSetVolume(int player_id, double volume) { 513 void BrowserMediaPlayerManager::OnSetVolume(int player_id, double volume) {
519 MediaPlayerAndroid* player = GetPlayer(player_id); 514 MediaPlayerAndroid* player = GetPlayer(player_id);
520 if (player) 515 if (player)
521 player->SetVolume(volume); 516 player->SetVolume(volume);
522 } 517 }
523 518
524 void BrowserMediaPlayerManager::OnReleaseResources(int player_id) { 519 void BrowserMediaPlayerManager::OnReleaseResources(int player_id) {
525 MediaPlayerAndroid* player = GetPlayer(player_id); 520 MediaPlayerAndroid* player = GetPlayer(player_id);
526 if (player) 521 if (player)
527 player->Release(); 522 player->Release();
528 if (player_id == fullscreen_player_id_)
529 fullscreen_player_is_released_ = true;
530 523
531 #if defined(GOOGLE_TV) 524 #if defined(GOOGLE_TV)
532 WebContentsViewAndroid* view = 525 WebContentsViewAndroid* view =
533 static_cast<WebContentsViewAndroid*>(web_contents_->GetView()); 526 static_cast<WebContentsViewAndroid*>(web_contents_->GetView());
534 if (view) 527 if (view)
535 view->NotifyExternalSurface(player_id, false, gfx::RectF()); 528 view->NotifyExternalSurface(player_id, false, gfx::RectF());
536 #endif 529 #endif
537 } 530 }
538 531
539 void BrowserMediaPlayerManager::OnDestroyPlayer(int player_id) { 532 void BrowserMediaPlayerManager::OnDestroyPlayer(int player_id) {
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
740 if (pending_fullscreen_player_id_ != media_keys_id) 733 if (pending_fullscreen_player_id_ != media_keys_id)
741 return; 734 return;
742 735
743 pending_fullscreen_player_id_ = -1; 736 pending_fullscreen_player_id_ = -1;
744 MediaPlayerAndroid* player = GetPlayer(media_keys_id); 737 MediaPlayerAndroid* player = GetPlayer(media_keys_id);
745 if (player->IsPlaying()) 738 if (player->IsPlaying())
746 OnProtectedSurfaceRequested(media_keys_id); 739 OnProtectedSurfaceRequested(media_keys_id);
747 } 740 }
748 741
749 } // namespace content 742 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698