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, | 468 //this, |
qinmin
2015/05/26 00:49:19
just drop this line
Tima Vaisburd
2015/05/28 02:00:34
Done.
| |
473 host->browser_demuxer_android().get()); | 469 host->browser_demuxer_android().get()); |
474 | 470 |
475 if (!player) | 471 if (!player) |
476 return; | 472 return; |
477 | 473 |
478 AddPlayer(player); | 474 AddPlayer(player); |
479 } | 475 } |
480 | 476 |
481 void BrowserMediaPlayerManager::OnStart(int player_id) { | 477 void BrowserMediaPlayerManager::OnStart(int player_id) { |
482 MediaPlayerAndroid* player = GetPlayer(player_id); | 478 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); | 615 external_video_surface_container_->ReleaseExternalVideoSurface(player_id); |
620 #endif // defined(VIDEO_HOLE) | 616 #endif // defined(VIDEO_HOLE) |
621 } | 617 } |
622 | 618 |
623 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) { | 619 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) { |
624 player->Release(); | 620 player->Release(); |
625 ReleaseMediaResources(player->player_id()); | 621 ReleaseMediaResources(player->player_id()); |
626 } | 622 } |
627 | 623 |
628 } // namespace content | 624 } // namespace content |
OLD | NEW |