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/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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 return new BrowserMediaPlayerManager(rfh, audio_monitor); | 128 return new BrowserMediaPlayerManager(rfh, audio_monitor); |
129 } | 129 } |
130 | 130 |
131 ContentViewCore* BrowserMediaPlayerManager::GetContentViewCore() const { | 131 ContentViewCore* BrowserMediaPlayerManager::GetContentViewCore() const { |
132 return ContentViewCoreImpl::FromWebContents(web_contents()); | 132 return ContentViewCoreImpl::FromWebContents(web_contents()); |
133 } | 133 } |
134 | 134 |
135 MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer( | 135 MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer( |
136 const MediaPlayerHostMsg_Initialize_Params& media_player_params, | 136 const MediaPlayerHostMsg_Initialize_Params& media_player_params, |
137 bool hide_url_log, | 137 bool hide_url_log, |
138 MediaPlayerManager* manager, | |
139 BrowserDemuxerAndroid* demuxer) { | 138 BrowserDemuxerAndroid* demuxer) { |
140 switch (media_player_params.type) { | 139 switch (media_player_params.type) { |
141 case MEDIA_PLAYER_TYPE_URL: { | 140 case MEDIA_PLAYER_TYPE_URL: { |
142 const std::string user_agent = GetContentClient()->GetUserAgent(); | 141 const std::string user_agent = GetContentClient()->GetUserAgent(); |
143 MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge( | 142 MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge( |
144 media_player_params.player_id, | 143 media_player_params.player_id, |
145 media_player_params.url, | 144 media_player_params.url, |
146 media_player_params.first_party_for_cookies, | 145 media_player_params.first_party_for_cookies, |
147 user_agent, | 146 user_agent, |
148 hide_url_log, | 147 hide_url_log, |
149 manager, | 148 this, |
150 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, | 149 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, |
151 weak_ptr_factory_.GetWeakPtr()), | 150 weak_ptr_factory_.GetWeakPtr()), |
152 media_player_params.frame_url, | 151 media_player_params.frame_url, |
153 media_player_params.allow_credentials); | 152 media_player_params.allow_credentials); |
154 BrowserMediaPlayerManager* browser_media_player_manager = | |
155 static_cast<BrowserMediaPlayerManager*>(manager); | |
156 ContentViewCoreImpl* content_view_core_impl = | 153 ContentViewCoreImpl* content_view_core_impl = |
157 static_cast<ContentViewCoreImpl*>(ContentViewCore::FromWebContents( | 154 static_cast<ContentViewCoreImpl*>(ContentViewCore::FromWebContents( |
158 browser_media_player_manager->web_contents_)); | 155 web_contents_)); |
159 if (!content_view_core_impl) { | 156 if (!content_view_core_impl) { |
160 // May reach here due to prerendering. Don't extract the metadata | 157 // May reach here due to prerendering. Don't extract the metadata |
161 // since it is expensive. | 158 // since it is expensive. |
162 // TODO(qinmin): extract the metadata once the user decided to load | 159 // TODO(qinmin): extract the metadata once the user decided to load |
163 // the page. | 160 // the page. |
164 browser_media_player_manager->OnMediaMetadataChanged( | 161 OnMediaMetadataChanged( |
165 media_player_params.player_id, base::TimeDelta(), 0, 0, false); | 162 media_player_params.player_id, base::TimeDelta(), 0, 0, false); |
166 } else if (!content_view_core_impl->ShouldBlockMediaRequest( | 163 } else if (!content_view_core_impl->ShouldBlockMediaRequest( |
167 media_player_params.url)) { | 164 media_player_params.url)) { |
168 media_player_bridge->Initialize(); | 165 media_player_bridge->Initialize(); |
169 } | 166 } |
170 return media_player_bridge; | 167 return media_player_bridge; |
171 } | 168 } |
172 | 169 |
173 case MEDIA_PLAYER_TYPE_MEDIA_SOURCE: { | 170 case MEDIA_PLAYER_TYPE_MEDIA_SOURCE: { |
174 if (base::CommandLine::ForCurrentProcess()-> | 171 if (base::CommandLine::ForCurrentProcess()-> |
175 HasSwitch(switches::kEnableMediaThreadForMediaPlayback)) { | 172 HasSwitch(switches::kEnableMediaThreadForMediaPlayback)) { |
176 return new MediaCodecPlayer( | 173 return new MediaCodecPlayer( |
177 media_player_params.player_id, | 174 media_player_params.player_id, |
178 manager, | 175 weak_ptr_factory_.GetWeakPtr(), |
179 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, | 176 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, |
180 weak_ptr_factory_.GetWeakPtr()), | 177 weak_ptr_factory_.GetWeakPtr()), |
181 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), | 178 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), |
182 media_player_params.frame_url); | 179 media_player_params.frame_url); |
183 } else { | 180 } else { |
184 return new MediaSourcePlayer( | 181 return new MediaSourcePlayer( |
185 media_player_params.player_id, | 182 media_player_params.player_id, |
186 manager, | 183 this, |
187 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, | 184 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, |
188 weak_ptr_factory_.GetWeakPtr()), | 185 weak_ptr_factory_.GetWeakPtr()), |
189 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), | 186 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), |
190 media_player_params.frame_url); | 187 media_player_params.frame_url); |
191 } | 188 } |
192 } | 189 } |
193 } | 190 } |
194 | 191 |
195 NOTREACHED(); | 192 NOTREACHED(); |
196 return NULL; | 193 return NULL; |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 media_player_params.demuxer_client_id > 0) | 525 media_player_params.demuxer_client_id > 0) |
529 << "Media source players must have positive demuxer client IDs: " | 526 << "Media source players must have positive demuxer client IDs: " |
530 << media_player_params.demuxer_client_id; | 527 << media_player_params.demuxer_client_id; |
531 | 528 |
532 RemovePlayer(media_player_params.player_id); | 529 RemovePlayer(media_player_params.player_id); |
533 | 530 |
534 RenderProcessHostImpl* host = static_cast<RenderProcessHostImpl*>( | 531 RenderProcessHostImpl* host = static_cast<RenderProcessHostImpl*>( |
535 web_contents()->GetRenderProcessHost()); | 532 web_contents()->GetRenderProcessHost()); |
536 MediaPlayerAndroid* player = | 533 MediaPlayerAndroid* player = |
537 CreateMediaPlayer(media_player_params, | 534 CreateMediaPlayer(media_player_params, |
538 | |
539 host->GetBrowserContext()->IsOffTheRecord(), | 535 host->GetBrowserContext()->IsOffTheRecord(), |
540 this, | |
541 host->browser_demuxer_android().get()); | 536 host->browser_demuxer_android().get()); |
542 | 537 |
543 if (!player) | 538 if (!player) |
544 return; | 539 return; |
545 | 540 |
546 AddPlayer(player); | 541 AddPlayer(player); |
547 } | 542 } |
548 | 543 |
549 void BrowserMediaPlayerManager::OnStart(int player_id) { | 544 void BrowserMediaPlayerManager::OnStart(int player_id) { |
550 MediaPlayerAndroid* player = GetPlayer(player_id); | 545 MediaPlayerAndroid* player = GetPlayer(player_id); |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
690 external_video_surface_container_->ReleaseExternalVideoSurface(player_id); | 685 external_video_surface_container_->ReleaseExternalVideoSurface(player_id); |
691 #endif // defined(VIDEO_HOLE) | 686 #endif // defined(VIDEO_HOLE) |
692 } | 687 } |
693 | 688 |
694 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) { | 689 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) { |
695 player->Release(); | 690 player->Release(); |
696 ReleaseMediaResources(player->player_id()); | 691 ReleaseMediaResources(player->player_id()); |
697 } | 692 } |
698 | 693 |
699 } // namespace content | 694 } // namespace content |
OLD | NEW |