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_browser_main_parts.h" | 5 #include "chromecast/browser/cast_browser_main_parts.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include <string> | 10 #include <string> |
11 | 11 |
12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
13 #include "base/files/file_util.h" | 13 #include "base/files/file_util.h" |
14 #include "base/macros.h" | 14 #include "base/macros.h" |
15 #include "base/memory/ptr_util.h" | 15 #include "base/memory/ptr_util.h" |
16 #include "base/message_loop/message_loop.h" | 16 #include "base/message_loop/message_loop.h" |
17 #include "base/path_service.h" | 17 #include "base/path_service.h" |
18 #include "base/run_loop.h" | 18 #include "base/run_loop.h" |
19 #include "base/single_thread_task_runner.h" | 19 #include "base/single_thread_task_runner.h" |
20 #include "base/threading/thread.h" | 20 #include "base/threading/thread.h" |
21 #include "base/threading/thread_task_runner_handle.h" | 21 #include "base/threading/thread_task_runner_handle.h" |
22 #include "build/build_config.h" | 22 #include "build/build_config.h" |
23 #include "cc/base/switches.h" | 23 #include "cc/base/switches.h" |
24 #include "chromecast/base/cast_constants.h" | 24 #include "chromecast/base/cast_constants.h" |
25 #include "chromecast/base/cast_features.h" | |
26 #include "chromecast/base/cast_paths.h" | 25 #include "chromecast/base/cast_paths.h" |
27 #include "chromecast/base/cast_sys_info_util.h" | 26 #include "chromecast/base/cast_sys_info_util.h" |
28 #include "chromecast/base/chromecast_switches.h" | 27 #include "chromecast/base/chromecast_switches.h" |
29 #include "chromecast/base/metrics/cast_metrics_helper.h" | 28 #include "chromecast/base/metrics/cast_metrics_helper.h" |
30 #include "chromecast/base/metrics/grouped_histogram.h" | 29 #include "chromecast/base/metrics/grouped_histogram.h" |
31 #include "chromecast/base/pref_names.h" | |
32 #include "chromecast/base/version.h" | 30 #include "chromecast/base/version.h" |
33 #include "chromecast/browser/cast_browser_context.h" | 31 #include "chromecast/browser/cast_browser_context.h" |
34 #include "chromecast/browser/cast_browser_process.h" | 32 #include "chromecast/browser/cast_browser_process.h" |
35 #include "chromecast/browser/cast_content_browser_client.h" | 33 #include "chromecast/browser/cast_content_browser_client.h" |
36 #include "chromecast/browser/cast_memory_pressure_monitor.h" | 34 #include "chromecast/browser/cast_memory_pressure_monitor.h" |
37 #include "chromecast/browser/cast_net_log.h" | 35 #include "chromecast/browser/cast_net_log.h" |
38 #include "chromecast/browser/devtools/remote_debugging_server.h" | 36 #include "chromecast/browser/devtools/remote_debugging_server.h" |
39 #include "chromecast/browser/geolocation/cast_access_token_store.h" | 37 #include "chromecast/browser/geolocation/cast_access_token_store.h" |
40 #include "chromecast/browser/media/media_caps_impl.h" | 38 #include "chromecast/browser/media/media_caps_impl.h" |
41 #include "chromecast/browser/metrics/cast_metrics_prefs.h" | 39 #include "chromecast/browser/metrics/cast_metrics_prefs.h" |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 } | 270 } |
273 } | 271 } |
274 | 272 |
275 } // namespace | 273 } // namespace |
276 | 274 |
277 CastBrowserMainParts::CastBrowserMainParts( | 275 CastBrowserMainParts::CastBrowserMainParts( |
278 const content::MainFunctionParams& parameters, | 276 const content::MainFunctionParams& parameters, |
279 URLRequestContextFactory* url_request_context_factory) | 277 URLRequestContextFactory* url_request_context_factory) |
280 : BrowserMainParts(), | 278 : BrowserMainParts(), |
281 cast_browser_process_(new CastBrowserProcess()), | 279 cast_browser_process_(new CastBrowserProcess()), |
282 field_trial_list_(nullptr), | |
283 parameters_(parameters), | 280 parameters_(parameters), |
284 url_request_context_factory_(url_request_context_factory), | 281 url_request_context_factory_(url_request_context_factory), |
285 net_log_(new CastNetLog()), | 282 net_log_(new CastNetLog()), |
286 media_caps_(new media::MediaCapsImpl()) { | 283 media_caps_(new media::MediaCapsImpl()) { |
287 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 284 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
288 AddDefaultCommandLineSwitches(command_line); | 285 AddDefaultCommandLineSwitches(command_line); |
289 | 286 |
290 #if BUILDFLAG(IS_CAST_USING_CMA_BACKEND) | 287 #if BUILDFLAG(IS_CAST_USING_CMA_BACKEND) |
291 media_resource_tracker_ = nullptr; | 288 media_resource_tracker_ = nullptr; |
292 #endif // BUILDFLAG(IS_CAST_USING_CMA_BACKEND) | 289 #endif // BUILDFLAG(IS_CAST_USING_CMA_BACKEND) |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 breakpad::CrashDumpObserver::Create(); | 405 breakpad::CrashDumpObserver::Create(); |
409 breakpad::CrashDumpObserver::GetInstance()->RegisterClient( | 406 breakpad::CrashDumpObserver::GetInstance()->RegisterClient( |
410 base::MakeUnique<breakpad::CrashDumpManager>(crash_dumps_dir, | 407 base::MakeUnique<breakpad::CrashDumpManager>(crash_dumps_dir, |
411 kAndroidMinidumpDescriptor)); | 408 kAndroidMinidumpDescriptor)); |
412 #else | 409 #else |
413 base::FilePath home_dir; | 410 base::FilePath home_dir; |
414 CHECK(PathService::Get(DIR_CAST_HOME, &home_dir)); | 411 CHECK(PathService::Get(DIR_CAST_HOME, &home_dir)); |
415 if (!base::CreateDirectory(home_dir)) | 412 if (!base::CreateDirectory(home_dir)) |
416 return 1; | 413 return 1; |
417 | 414 |
418 scoped_refptr<PrefRegistrySimple> pref_registry(new PrefRegistrySimple()); | |
419 metrics::RegisterPrefs(pref_registry.get()); | |
420 PrefProxyConfigTrackerImpl::RegisterPrefs(pref_registry.get()); | |
421 cast_browser_process_->SetPrefService( | |
422 PrefServiceHelper::CreatePrefService(pref_registry.get())); | |
423 | |
424 // As soon as the PrefService is set, initialize the base::FeatureList, so | |
425 // objects initialized after this point can use features from | |
426 // base::FeatureList. | |
427 const auto* features_dict = | |
428 cast_browser_process_->pref_service()->GetDictionary( | |
429 prefs::kLatestDCSFeatures); | |
430 const auto* experiment_ids = cast_browser_process_->pref_service()->GetList( | |
431 prefs::kActiveDCSExperiments); | |
432 auto* command_line = base::CommandLine::ForCurrentProcess(); | |
433 InitializeFeatureList( | |
434 *features_dict, *experiment_ids, | |
435 command_line->GetSwitchValueASCII(switches::kEnableFeatures), | |
436 command_line->GetSwitchValueASCII(switches::kDisableFeatures)); | |
437 | |
438 // Hook for internal code | 415 // Hook for internal code |
439 cast_browser_process_->browser_client()->PreCreateThreads(); | 416 cast_browser_process_->browser_client()->PreCreateThreads(); |
440 | 417 |
441 // Set GL strings so GPU config code can make correct feature blacklisting/ | 418 // Set GL strings so GPU config code can make correct feature blacklisting/ |
442 // whitelisting decisions. | 419 // whitelisting decisions. |
443 // Note: SetGLStrings can be called before GpuDataManager::Initialize. | 420 // Note: SetGLStrings can be called before GpuDataManager::Initialize. |
444 std::unique_ptr<CastSysInfo> sys_info = CreateSysInfo(); | 421 std::unique_ptr<CastSysInfo> sys_info = CreateSysInfo(); |
445 content::GpuDataManager::GetInstance()->SetGLStrings( | 422 content::GpuDataManager::GetInstance()->SetGLStrings( |
446 sys_info->GetGlVendor(), sys_info->GetGlRenderer(), | 423 sys_info->GetGlVendor(), sys_info->GetGlRenderer(), |
447 sys_info->GetGlVersion()); | 424 sys_info->GetGlVersion()); |
448 #endif | 425 #endif |
449 | 426 |
450 #if defined(USE_AURA) | 427 #if defined(USE_AURA) |
451 cast_browser_process_->SetCastScreen(base::WrapUnique(new CastScreen())); | 428 cast_browser_process_->SetCastScreen(base::WrapUnique(new CastScreen())); |
452 DCHECK(!display::Screen::GetScreen()); | 429 DCHECK(!display::Screen::GetScreen()); |
453 display::Screen::SetScreenInstance(cast_browser_process_->cast_screen()); | 430 display::Screen::SetScreenInstance(cast_browser_process_->cast_screen()); |
454 #endif | 431 #endif |
455 | 432 |
456 content::ChildProcessSecurityPolicy::GetInstance()->RegisterWebSafeScheme( | 433 content::ChildProcessSecurityPolicy::GetInstance()->RegisterWebSafeScheme( |
457 kChromeResourceScheme); | 434 kChromeResourceScheme); |
458 return 0; | 435 return 0; |
459 } | 436 } |
460 | 437 |
461 void CastBrowserMainParts::PreMainMessageLoopRun() { | 438 void CastBrowserMainParts::PreMainMessageLoopRun() { |
| 439 scoped_refptr<PrefRegistrySimple> pref_registry(new PrefRegistrySimple()); |
| 440 metrics::RegisterPrefs(pref_registry.get()); |
| 441 PrefProxyConfigTrackerImpl::RegisterPrefs(pref_registry.get()); |
| 442 cast_browser_process_->SetPrefService( |
| 443 PrefServiceHelper::CreatePrefService(pref_registry.get())); |
462 | 444 |
463 #if !defined(OS_ANDROID) | 445 #if !defined(OS_ANDROID) |
464 memory_pressure_monitor_.reset(new CastMemoryPressureMonitor()); | 446 memory_pressure_monitor_.reset(new CastMemoryPressureMonitor()); |
465 #endif // defined(OS_ANDROID) | 447 #endif // defined(OS_ANDROID) |
466 | 448 |
467 cast_browser_process_->SetNetLog(net_log_.get()); | 449 cast_browser_process_->SetNetLog(net_log_.get()); |
468 url_request_context_factory_->InitializeOnUIThread(net_log_.get()); | 450 url_request_context_factory_->InitializeOnUIThread(net_log_.get()); |
469 | 451 |
470 cast_browser_process_->SetConnectivityChecker(ConnectivityChecker::Create( | 452 cast_browser_process_->SetConnectivityChecker(ConnectivityChecker::Create( |
471 content::BrowserThread::GetTaskRunnerForThread( | 453 content::BrowserThread::GetTaskRunnerForThread( |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
582 | 564 |
583 void CastBrowserMainParts::PostDestroyThreads() { | 565 void CastBrowserMainParts::PostDestroyThreads() { |
584 #if !defined(OS_ANDROID) | 566 #if !defined(OS_ANDROID) |
585 media_resource_tracker_->FinalizeAndDestroy(); | 567 media_resource_tracker_->FinalizeAndDestroy(); |
586 media_resource_tracker_ = nullptr; | 568 media_resource_tracker_ = nullptr; |
587 #endif | 569 #endif |
588 } | 570 } |
589 | 571 |
590 } // namespace shell | 572 } // namespace shell |
591 } // namespace chromecast | 573 } // namespace chromecast |
OLD | NEW |