| 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 |