OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |