Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: chromecast/browser/cast_browser_main_parts.cc

Issue 1385333002: [Chromecast] Cleanup the API for creating MediaPipelineBackend. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_browser_main_parts.h" 5 #include "chromecast/browser/cast_browser_main_parts.h"
6 6
7 #include <string> 7 #include <string>
8 #if !defined(OS_ANDROID) 8 #if !defined(OS_ANDROID)
9 #include <signal.h> 9 #include <signal.h>
10 #include <sys/prctl.h> 10 #include <sys/prctl.h>
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 std::string(g_default_switches[i].switch_name), 206 std::string(g_default_switches[i].switch_name),
207 std::string(g_default_switches[i].switch_value)); 207 std::string(g_default_switches[i].switch_value));
208 ++i; 208 ++i;
209 } 209 }
210 } 210 }
211 211
212 } // namespace 212 } // namespace
213 213
214 CastBrowserMainParts::CastBrowserMainParts( 214 CastBrowserMainParts::CastBrowserMainParts(
215 const content::MainFunctionParams& parameters, 215 const content::MainFunctionParams& parameters,
216 URLRequestContextFactory* url_request_context_factory, 216 URLRequestContextFactory* url_request_context_factory)
217 scoped_ptr<::media::AudioManagerFactory> audio_manager_factory)
218 : BrowserMainParts(), 217 : BrowserMainParts(),
219 cast_browser_process_(new CastBrowserProcess()), 218 cast_browser_process_(new CastBrowserProcess()),
220 parameters_(parameters), 219 parameters_(parameters),
221 url_request_context_factory_(url_request_context_factory), 220 url_request_context_factory_(url_request_context_factory),
222 audio_manager_factory_(audio_manager_factory.Pass()),
223 net_log_(new CastNetLog()) { 221 net_log_(new CastNetLog()) {
224 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 222 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
225 AddDefaultCommandLineSwitches(command_line); 223 AddDefaultCommandLineSwitches(command_line);
226 } 224 }
227 225
228 CastBrowserMainParts::~CastBrowserMainParts() { 226 CastBrowserMainParts::~CastBrowserMainParts() {
229 } 227 }
230 228
231 void CastBrowserMainParts::PreMainMessageLoopStart() { 229 void CastBrowserMainParts::PreMainMessageLoopStart() {
232 // GroupedHistograms needs to be initialized before any threads are created 230 // GroupedHistograms needs to be initialized before any threads are created
233 // to prevent race conditions between calls to Preregister and those threads 231 // to prevent race conditions between calls to Preregister and those threads
234 // attempting to collect metrics. 232 // attempting to collect metrics.
235 // This call must also be before NetworkChangeNotifier, as it generates 233 // This call must also be before NetworkChangeNotifier, as it generates
236 // Net/DNS metrics. 234 // Net/DNS metrics.
237 metrics::PreregisterAllGroupedHistograms(); 235 metrics::PreregisterAllGroupedHistograms();
238 236
239 // Set the platform's implementation of AudioManagerFactory.
240 if (audio_manager_factory_)
241 ::media::AudioManager::SetFactory(audio_manager_factory_.release());
242
243 #if defined(OS_ANDROID) 237 #if defined(OS_ANDROID)
244 net::NetworkChangeNotifier::SetFactory( 238 net::NetworkChangeNotifier::SetFactory(
245 new net::NetworkChangeNotifierFactoryAndroid()); 239 new net::NetworkChangeNotifierFactoryAndroid());
246 #else 240 #else
247 net::NetworkChangeNotifier::SetFactory( 241 net::NetworkChangeNotifier::SetFactory(
248 new NetworkChangeNotifierFactoryCast()); 242 new NetworkChangeNotifierFactoryCast());
249 #endif // defined(OS_ANDROID) 243 #endif // defined(OS_ANDROID)
250 } 244 }
251 245
252 void CastBrowserMainParts::PostMainMessageLoopStart() { 246 void CastBrowserMainParts::PostMainMessageLoopStart() {
(...skipping 13 matching lines...) Expand all
266 if (!chromecast::CrashHandler::GetCrashDumpLocation(&crash_dumps_dir)) { 260 if (!chromecast::CrashHandler::GetCrashDumpLocation(&crash_dumps_dir)) {
267 LOG(ERROR) << "Could not find crash dump location."; 261 LOG(ERROR) << "Could not find crash dump location.";
268 } 262 }
269 cast_browser_process_->SetCrashDumpManager( 263 cast_browser_process_->SetCrashDumpManager(
270 make_scoped_ptr(new breakpad::CrashDumpManager(crash_dumps_dir))); 264 make_scoped_ptr(new breakpad::CrashDumpManager(crash_dumps_dir)));
271 #else 265 #else
272 base::FilePath home_dir; 266 base::FilePath home_dir;
273 CHECK(PathService::Get(DIR_CAST_HOME, &home_dir)); 267 CHECK(PathService::Get(DIR_CAST_HOME, &home_dir));
274 if (!base::CreateDirectory(home_dir)) 268 if (!base::CreateDirectory(home_dir))
275 return 1; 269 return 1;
270
271 // AudioManager is created immediately after threads are created, requiring
272 // AudioManagerFactory to be set beforehand.
273 scoped_ptr< ::media::AudioManagerFactory> audio_manager_factory =
274 cast_browser_process_->browser_client()->CreateAudioManagerFactory();
275 ::media::AudioManager::SetFactory(audio_manager_factory.release());
276 #endif 276 #endif
277 277
278 #if defined(USE_AURA) 278 #if defined(USE_AURA)
279 // Screen can (and should) exist even with no displays connected. Its presence 279 // Screen can (and should) exist even with no displays connected. Its presence
280 // is assumed as an interface to access display information, e.g. from metrics 280 // is assumed as an interface to access display information, e.g. from metrics
281 // code. See CastContentWindow::CreateWindowTree for update when resolution 281 // code. See CastContentWindow::CreateWindowTree for update when resolution
282 // is available. 282 // is available.
283 cast_browser_process_->SetCastScreen(make_scoped_ptr(new CastScreen)); 283 cast_browser_process_->SetCastScreen(make_scoped_ptr(new CastScreen));
284 DCHECK(!gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_NATIVE)); 284 DCHECK(!gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_NATIVE));
285 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, 285 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE,
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 #if defined(USE_AURA) 401 #if defined(USE_AURA)
402 aura::Env::DeleteInstance(); 402 aura::Env::DeleteInstance();
403 #endif 403 #endif
404 404
405 DeregisterKillOnAlarm(); 405 DeregisterKillOnAlarm();
406 #endif 406 #endif
407 } 407 }
408 408
409 } // namespace shell 409 } // namespace shell
410 } // namespace chromecast 410 } // namespace chromecast
OLDNEW
« no previous file with comments | « chromecast/browser/cast_browser_main_parts.h ('k') | chromecast/browser/cast_content_browser_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698