| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chromecast/browser/cast_content_browser_client.h" | 5 #include "chromecast/browser/cast_content_browser_client.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 #include "chromecast/browser/cast_browser_process.h" | 24 #include "chromecast/browser/cast_browser_process.h" |
| 25 #include "chromecast/browser/cast_network_delegate.h" | 25 #include "chromecast/browser/cast_network_delegate.h" |
| 26 #include "chromecast/browser/cast_quota_permission_context.h" | 26 #include "chromecast/browser/cast_quota_permission_context.h" |
| 27 #include "chromecast/browser/cast_resource_dispatcher_host_delegate.h" | 27 #include "chromecast/browser/cast_resource_dispatcher_host_delegate.h" |
| 28 #include "chromecast/browser/geolocation/cast_access_token_store.h" | 28 #include "chromecast/browser/geolocation/cast_access_token_store.h" |
| 29 #include "chromecast/browser/media/cma_media_pipeline_client.h" | 29 #include "chromecast/browser/media/cma_media_pipeline_client.h" |
| 30 #include "chromecast/browser/media/cma_message_filter_host.h" | 30 #include "chromecast/browser/media/cma_message_filter_host.h" |
| 31 #include "chromecast/browser/service/cast_service_simple.h" | 31 #include "chromecast/browser/service/cast_service_simple.h" |
| 32 #include "chromecast/browser/url_request_context_factory.h" | 32 #include "chromecast/browser/url_request_context_factory.h" |
| 33 #include "chromecast/common/global_descriptors.h" | 33 #include "chromecast/common/global_descriptors.h" |
| 34 #include "chromecast/media/base/media_message_loop.h" | |
| 35 #include "chromecast/public/cast_media_shlib.h" | |
| 36 #include "chromecast/public/media/media_pipeline_backend.h" | 34 #include "chromecast/public/media/media_pipeline_backend.h" |
| 37 #include "components/crash/content/app/breakpad_linux.h" | 35 #include "components/crash/content/app/breakpad_linux.h" |
| 38 #include "components/crash/content/browser/crash_handler_host_linux.h" | 36 #include "components/crash/content/browser/crash_handler_host_linux.h" |
| 39 #include "components/network_hints/browser/network_hints_message_filter.h" | 37 #include "components/network_hints/browser/network_hints_message_filter.h" |
| 40 #include "content/public/browser/browser_thread.h" | 38 #include "content/public/browser/browser_thread.h" |
| 41 #include "content/public/browser/certificate_request_result_type.h" | 39 #include "content/public/browser/certificate_request_result_type.h" |
| 42 #include "content/public/browser/client_certificate_delegate.h" | 40 #include "content/public/browser/client_certificate_delegate.h" |
| 43 #include "content/public/browser/render_process_host.h" | 41 #include "content/public/browser/render_process_host.h" |
| 44 #include "content/public/browser/resource_dispatcher_host.h" | 42 #include "content/public/browser/resource_dispatcher_host.h" |
| 45 #include "content/public/browser/web_contents.h" | 43 #include "content/public/browser/web_contents.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 74 scoped_ptr<::media::MojoMediaClient> mojo_media_client( | 72 scoped_ptr<::media::MojoMediaClient> mojo_media_client( |
| 75 new media::CastMojoMediaClient( | 73 new media::CastMojoMediaClient( |
| 76 browser_client->GetCmaMediaPipelineClient())); | 74 browser_client->GetCmaMediaPipelineClient())); |
| 77 return scoped_ptr<mojo::ShellClient>( | 75 return scoped_ptr<mojo::ShellClient>( |
| 78 new ::media::MojoMediaApplication(std::move(mojo_media_client))); | 76 new ::media::MojoMediaApplication(std::move(mojo_media_client))); |
| 79 } | 77 } |
| 80 #endif // ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS | 78 #endif // ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS |
| 81 } // namespace | 79 } // namespace |
| 82 | 80 |
| 83 CastContentBrowserClient::CastContentBrowserClient() | 81 CastContentBrowserClient::CastContentBrowserClient() |
| 84 : url_request_context_factory_(new URLRequestContextFactory()) { | 82 : cast_browser_main_parts_(nullptr), |
| 85 } | 83 url_request_context_factory_(new URLRequestContextFactory()) {} |
| 86 | 84 |
| 87 CastContentBrowserClient::~CastContentBrowserClient() { | 85 CastContentBrowserClient::~CastContentBrowserClient() { |
| 88 content::BrowserThread::DeleteSoon( | 86 content::BrowserThread::DeleteSoon( |
| 89 content::BrowserThread::IO, | 87 content::BrowserThread::IO, |
| 90 FROM_HERE, | 88 FROM_HERE, |
| 91 url_request_context_factory_.release()); | 89 url_request_context_factory_.release()); |
| 92 } | 90 } |
| 93 | 91 |
| 94 void CastContentBrowserClient::AppendExtraCommandLineSwitches( | 92 void CastContentBrowserClient::AppendExtraCommandLineSwitches( |
| 95 base::CommandLine* command_line) { | 93 base::CommandLine* command_line) { |
| 96 } | 94 } |
| 97 | 95 |
| 98 void CastContentBrowserClient::PreCreateThreads() { | 96 void CastContentBrowserClient::PreCreateThreads() { |
| 99 } | 97 } |
| 100 | 98 |
| 101 scoped_ptr<CastService> CastContentBrowserClient::CreateCastService( | 99 scoped_ptr<CastService> CastContentBrowserClient::CreateCastService( |
| 102 content::BrowserContext* browser_context, | 100 content::BrowserContext* browser_context, |
| 103 PrefService* pref_service, | 101 PrefService* pref_service, |
| 104 net::URLRequestContextGetter* request_context_getter) { | 102 net::URLRequestContextGetter* request_context_getter, |
| 103 media::VideoPlaneController* video_plane_controller) { |
| 105 return make_scoped_ptr(new CastServiceSimple(browser_context, pref_service)); | 104 return make_scoped_ptr(new CastServiceSimple(browser_context, pref_service)); |
| 106 } | 105 } |
| 107 | 106 |
| 108 #if !defined(OS_ANDROID) | 107 #if !defined(OS_ANDROID) |
| 109 scoped_refptr<media::CmaMediaPipelineClient> | 108 scoped_refptr<media::CmaMediaPipelineClient> |
| 110 CastContentBrowserClient::GetCmaMediaPipelineClient() { | 109 CastContentBrowserClient::GetCmaMediaPipelineClient() { |
| 111 if (!cma_media_pipeline_client_.get()) | 110 if (!cma_media_pipeline_client_.get()) |
| 112 cma_media_pipeline_client_ = CreateCmaMediaPipelineClient(); | 111 cma_media_pipeline_client_ = CreateCmaMediaPipelineClient(); |
| 113 return cma_media_pipeline_client_; | 112 return cma_media_pipeline_client_; |
| 114 } | 113 } |
| 115 #endif // OS_ANDROID | 114 #endif // OS_ANDROID |
| 116 | 115 |
| 117 void CastContentBrowserClient::ProcessExiting() { | |
| 118 // Finalize CastMediaShlib on media thread to ensure it's not accessed | |
| 119 // after Finalize. | |
| 120 GetMediaTaskRunner()->PostTask(FROM_HERE, | |
| 121 base::Bind(&media::CastMediaShlib::Finalize)); | |
| 122 } | |
| 123 | |
| 124 void CastContentBrowserClient::SetMetricsClientId( | 116 void CastContentBrowserClient::SetMetricsClientId( |
| 125 const std::string& client_id) { | 117 const std::string& client_id) { |
| 126 } | 118 } |
| 127 | 119 |
| 128 void CastContentBrowserClient::RegisterMetricsProviders( | 120 void CastContentBrowserClient::RegisterMetricsProviders( |
| 129 ::metrics::MetricsService* metrics_service) { | 121 ::metrics::MetricsService* metrics_service) { |
| 130 } | 122 } |
| 131 | 123 |
| 132 bool CastContentBrowserClient::EnableRemoteDebuggingImmediately() { | 124 bool CastContentBrowserClient::EnableRemoteDebuggingImmediately() { |
| 133 return true; | 125 return true; |
| 134 } | 126 } |
| 135 | 127 |
| 136 content::BrowserMainParts* CastContentBrowserClient::CreateBrowserMainParts( | 128 content::BrowserMainParts* CastContentBrowserClient::CreateBrowserMainParts( |
| 137 const content::MainFunctionParams& parameters) { | 129 const content::MainFunctionParams& parameters) { |
| 138 content::BrowserMainParts* parts = | 130 DCHECK(!cast_browser_main_parts_); |
| 131 cast_browser_main_parts_ = |
| 139 new CastBrowserMainParts(parameters, url_request_context_factory_.get()); | 132 new CastBrowserMainParts(parameters, url_request_context_factory_.get()); |
| 140 CastBrowserProcess::GetInstance()->SetCastContentBrowserClient(this); | 133 CastBrowserProcess::GetInstance()->SetCastContentBrowserClient(this); |
| 141 return parts; | 134 return cast_browser_main_parts_; |
| 142 } | 135 } |
| 143 | 136 |
| 144 void CastContentBrowserClient::RenderProcessWillLaunch( | 137 void CastContentBrowserClient::RenderProcessWillLaunch( |
| 145 content::RenderProcessHost* host) { | 138 content::RenderProcessHost* host) { |
| 146 #if !defined(OS_ANDROID) | 139 #if !defined(OS_ANDROID) |
| 147 scoped_refptr<media::CmaMessageFilterHost> cma_message_filter( | 140 scoped_refptr<media::CmaMessageFilterHost> cma_message_filter( |
| 148 new media::CmaMessageFilterHost( | 141 new media::CmaMessageFilterHost( |
| 149 host->GetID(), GetCmaMediaPipelineClient(), GetMediaTaskRunner())); | 142 host->GetID(), GetCmaMediaPipelineClient(), GetMediaTaskRunner())); |
| 150 host->AddFilter(cma_message_filter.get()); | 143 host->AddFilter(cma_message_filter.get()); |
| 151 #endif // !defined(OS_ANDROID) | 144 #endif // !defined(OS_ANDROID) |
| 152 | 145 |
| 153 // Forcibly trigger I/O-thread URLRequestContext initialization before | 146 // Forcibly trigger I/O-thread URLRequestContext initialization before |
| 154 // getting HostResolver. | 147 // getting HostResolver. |
| 155 content::BrowserThread::PostTaskAndReplyWithResult( | 148 content::BrowserThread::PostTaskAndReplyWithResult( |
| 156 content::BrowserThread::IO, FROM_HERE, | 149 content::BrowserThread::IO, FROM_HERE, |
| 157 base::Bind(&net::URLRequestContextGetter::GetURLRequestContext, | 150 base::Bind(&net::URLRequestContextGetter::GetURLRequestContext, |
| 158 base::Unretained( | 151 base::Unretained( |
| 159 url_request_context_factory_->GetSystemGetter())), | 152 url_request_context_factory_->GetSystemGetter())), |
| 160 base::Bind(&CastContentBrowserClient::AddNetworkHintsMessageFilter, | 153 base::Bind(&CastContentBrowserClient::AddNetworkHintsMessageFilter, |
| 161 base::Unretained(this), host->GetID())); | 154 base::Unretained(this), host->GetID())); |
| 162 } | 155 } |
| 163 | 156 |
| 164 scoped_refptr<base::SingleThreadTaskRunner> | 157 scoped_refptr<base::SingleThreadTaskRunner> |
| 165 CastContentBrowserClient::GetMediaTaskRunner() { | 158 CastContentBrowserClient::GetMediaTaskRunner() { |
| 166 // TODO(alokp): Obtain task runner from a local thread or mojo media app. | 159 DCHECK(cast_browser_main_parts_); |
| 167 return media::MediaMessageLoop::GetTaskRunner(); | 160 return cast_browser_main_parts_->GetMediaTaskRunner(); |
| 168 } | 161 } |
| 169 | 162 |
| 170 #if !defined(OS_ANDROID) | 163 #if !defined(OS_ANDROID) |
| 171 scoped_refptr<media::CmaMediaPipelineClient> | 164 scoped_refptr<media::CmaMediaPipelineClient> |
| 172 CastContentBrowserClient::CreateCmaMediaPipelineClient() { | 165 CastContentBrowserClient::CreateCmaMediaPipelineClient() { |
| 173 return make_scoped_refptr(new media::CmaMediaPipelineClient()); | 166 return make_scoped_refptr(new media::CmaMediaPipelineClient()); |
| 174 } | 167 } |
| 175 #endif // OS_ANDROID | 168 #endif // OS_ANDROID |
| 176 | 169 |
| 177 void CastContentBrowserClient::AddNetworkHintsMessageFilter( | 170 void CastContentBrowserClient::AddNetworkHintsMessageFilter( |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 process_type, dumps_path, false /* upload */); | 489 process_type, dumps_path, false /* upload */); |
| 497 // StartUploaderThread() even though upload is diferred. | 490 // StartUploaderThread() even though upload is diferred. |
| 498 // Breakpad-related memory is freed in the uploader thread. | 491 // Breakpad-related memory is freed in the uploader thread. |
| 499 crash_handler->StartUploaderThread(); | 492 crash_handler->StartUploaderThread(); |
| 500 return crash_handler; | 493 return crash_handler; |
| 501 } | 494 } |
| 502 #endif // !defined(OS_ANDROID) | 495 #endif // !defined(OS_ANDROID) |
| 503 | 496 |
| 504 } // namespace shell | 497 } // namespace shell |
| 505 } // namespace chromecast | 498 } // namespace chromecast |
| OLD | NEW |