| 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 return new BrowserMediaPlayerManager(rfh, audio_monitor); | 72 return new BrowserMediaPlayerManager(rfh, audio_monitor); |
| 73 } | 73 } |
| 74 | 74 |
| 75 ContentViewCore* BrowserMediaPlayerManager::GetContentViewCore() const { | 75 ContentViewCore* BrowserMediaPlayerManager::GetContentViewCore() const { |
| 76 return ContentViewCoreImpl::FromWebContents(web_contents()); | 76 return ContentViewCoreImpl::FromWebContents(web_contents()); |
| 77 } | 77 } |
| 78 | 78 |
| 79 MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer( | 79 MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer( |
| 80 const MediaPlayerHostMsg_Initialize_Params& media_player_params, | 80 const MediaPlayerHostMsg_Initialize_Params& media_player_params, |
| 81 bool hide_url_log, | 81 bool hide_url_log, |
| 82 MediaPlayerManager* manager, | |
| 83 BrowserDemuxerAndroid* demuxer) { | 82 BrowserDemuxerAndroid* demuxer) { |
| 84 switch (media_player_params.type) { | 83 switch (media_player_params.type) { |
| 85 case MEDIA_PLAYER_TYPE_URL: { | 84 case MEDIA_PLAYER_TYPE_URL: { |
| 86 const std::string user_agent = GetContentClient()->GetUserAgent(); | 85 const std::string user_agent = GetContentClient()->GetUserAgent(); |
| 87 MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge( | 86 MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge( |
| 88 media_player_params.player_id, | 87 media_player_params.player_id, |
| 89 media_player_params.url, | 88 media_player_params.url, |
| 90 media_player_params.first_party_for_cookies, | 89 media_player_params.first_party_for_cookies, |
| 91 user_agent, | 90 user_agent, |
| 92 hide_url_log, | 91 hide_url_log, |
| 93 manager, | 92 this, |
| 94 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, | 93 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, |
| 95 weak_ptr_factory_.GetWeakPtr()), | 94 weak_ptr_factory_.GetWeakPtr()), |
| 96 media_player_params.frame_url, | 95 media_player_params.frame_url, |
| 97 media_player_params.allow_credentials); | 96 media_player_params.allow_credentials); |
| 98 BrowserMediaPlayerManager* browser_media_player_manager = | |
| 99 static_cast<BrowserMediaPlayerManager*>(manager); | |
| 100 ContentViewCoreImpl* content_view_core_impl = | 97 ContentViewCoreImpl* content_view_core_impl = |
| 101 static_cast<ContentViewCoreImpl*>(ContentViewCore::FromWebContents( | 98 static_cast<ContentViewCoreImpl*>(ContentViewCore::FromWebContents( |
| 102 browser_media_player_manager->web_contents_)); | 99 web_contents_)); |
| 103 if (!content_view_core_impl) { | 100 if (!content_view_core_impl) { |
| 104 // May reach here due to prerendering. Don't extract the metadata | 101 // May reach here due to prerendering. Don't extract the metadata |
| 105 // since it is expensive. | 102 // since it is expensive. |
| 106 // TODO(qinmin): extract the metadata once the user decided to load | 103 // TODO(qinmin): extract the metadata once the user decided to load |
| 107 // the page. | 104 // the page. |
| 108 browser_media_player_manager->OnMediaMetadataChanged( | 105 OnMediaMetadataChanged( |
| 109 media_player_params.player_id, base::TimeDelta(), 0, 0, false); | 106 media_player_params.player_id, base::TimeDelta(), 0, 0, false); |
| 110 } else if (!content_view_core_impl->ShouldBlockMediaRequest( | 107 } else if (!content_view_core_impl->ShouldBlockMediaRequest( |
| 111 media_player_params.url)) { | 108 media_player_params.url)) { |
| 112 media_player_bridge->Initialize(); | 109 media_player_bridge->Initialize(); |
| 113 } | 110 } |
| 114 return media_player_bridge; | 111 return media_player_bridge; |
| 115 } | 112 } |
| 116 | 113 |
| 117 case MEDIA_PLAYER_TYPE_MEDIA_SOURCE: { | 114 case MEDIA_PLAYER_TYPE_MEDIA_SOURCE: { |
| 118 if (base::CommandLine::ForCurrentProcess()-> | 115 if (base::CommandLine::ForCurrentProcess()-> |
| 119 HasSwitch(switches::kEnableMediaThreadForMediaPlayback)) { | 116 HasSwitch(switches::kEnableMediaThreadForMediaPlayback)) { |
| 120 return new MediaCodecPlayer( | 117 return new MediaCodecPlayer( |
| 121 media_player_params.player_id, | 118 media_player_params.player_id, |
| 122 manager, | 119 weak_ptr_factory_.GetWeakPtr(), |
| 123 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, | 120 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, |
| 124 weak_ptr_factory_.GetWeakPtr()), | 121 weak_ptr_factory_.GetWeakPtr()), |
| 125 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), | 122 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), |
| 126 media_player_params.frame_url); | 123 media_player_params.frame_url); |
| 127 } else { | 124 } else { |
| 128 return new MediaSourcePlayer( | 125 return new MediaSourcePlayer( |
| 129 media_player_params.player_id, | 126 media_player_params.player_id, |
| 130 manager, | 127 this, |
| 131 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, | 128 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, |
| 132 weak_ptr_factory_.GetWeakPtr()), | 129 weak_ptr_factory_.GetWeakPtr()), |
| 133 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), | 130 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), |
| 134 media_player_params.frame_url); | 131 media_player_params.frame_url); |
| 135 } | 132 } |
| 136 } | 133 } |
| 137 } | 134 } |
| 138 | 135 |
| 139 NOTREACHED(); | 136 NOTREACHED(); |
| 140 return NULL; | 137 return NULL; |
| (...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 460 media_player_params.demuxer_client_id > 0) | 457 media_player_params.demuxer_client_id > 0) |
| 461 << "Media source players must have positive demuxer client IDs: " | 458 << "Media source players must have positive demuxer client IDs: " |
| 462 << media_player_params.demuxer_client_id; | 459 << media_player_params.demuxer_client_id; |
| 463 | 460 |
| 464 RemovePlayer(media_player_params.player_id); | 461 RemovePlayer(media_player_params.player_id); |
| 465 | 462 |
| 466 RenderProcessHostImpl* host = static_cast<RenderProcessHostImpl*>( | 463 RenderProcessHostImpl* host = static_cast<RenderProcessHostImpl*>( |
| 467 web_contents()->GetRenderProcessHost()); | 464 web_contents()->GetRenderProcessHost()); |
| 468 MediaPlayerAndroid* player = | 465 MediaPlayerAndroid* player = |
| 469 CreateMediaPlayer(media_player_params, | 466 CreateMediaPlayer(media_player_params, |
| 470 | |
| 471 host->GetBrowserContext()->IsOffTheRecord(), | 467 host->GetBrowserContext()->IsOffTheRecord(), |
| 472 this, | |
| 473 host->browser_demuxer_android().get()); | 468 host->browser_demuxer_android().get()); |
| 474 | 469 |
| 475 if (!player) | 470 if (!player) |
| 476 return; | 471 return; |
| 477 | 472 |
| 478 AddPlayer(player); | 473 AddPlayer(player); |
| 479 } | 474 } |
| 480 | 475 |
| 481 void BrowserMediaPlayerManager::OnStart(int player_id) { | 476 void BrowserMediaPlayerManager::OnStart(int player_id) { |
| 482 MediaPlayerAndroid* player = GetPlayer(player_id); | 477 MediaPlayerAndroid* player = GetPlayer(player_id); |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 619 external_video_surface_container_->ReleaseExternalVideoSurface(player_id); | 614 external_video_surface_container_->ReleaseExternalVideoSurface(player_id); |
| 620 #endif // defined(VIDEO_HOLE) | 615 #endif // defined(VIDEO_HOLE) |
| 621 } | 616 } |
| 622 | 617 |
| 623 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) { | 618 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) { |
| 624 player->Release(); | 619 player->Release(); |
| 625 ReleaseMediaResources(player->player_id()); | 620 ReleaseMediaResources(player->player_id()); |
| 626 } | 621 } |
| 627 | 622 |
| 628 } // namespace content | 623 } // namespace content |
| OLD | NEW |