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" |
25 #include "chromecast/base/cast_paths.h" | 26 #include "chromecast/base/cast_paths.h" |
26 #include "chromecast/base/cast_sys_info_util.h" | 27 #include "chromecast/base/cast_sys_info_util.h" |
27 #include "chromecast/base/chromecast_switches.h" | 28 #include "chromecast/base/chromecast_switches.h" |
28 #include "chromecast/base/metrics/cast_metrics_helper.h" | 29 #include "chromecast/base/metrics/cast_metrics_helper.h" |
29 #include "chromecast/base/metrics/grouped_histogram.h" | 30 #include "chromecast/base/metrics/grouped_histogram.h" |
| 31 #include "chromecast/base/pref_names.h" |
30 #include "chromecast/base/version.h" | 32 #include "chromecast/base/version.h" |
31 #include "chromecast/browser/cast_browser_context.h" | 33 #include "chromecast/browser/cast_browser_context.h" |
32 #include "chromecast/browser/cast_browser_process.h" | 34 #include "chromecast/browser/cast_browser_process.h" |
33 #include "chromecast/browser/cast_content_browser_client.h" | 35 #include "chromecast/browser/cast_content_browser_client.h" |
34 #include "chromecast/browser/cast_memory_pressure_monitor.h" | 36 #include "chromecast/browser/cast_memory_pressure_monitor.h" |
35 #include "chromecast/browser/cast_net_log.h" | 37 #include "chromecast/browser/cast_net_log.h" |
36 #include "chromecast/browser/devtools/remote_debugging_server.h" | 38 #include "chromecast/browser/devtools/remote_debugging_server.h" |
37 #include "chromecast/browser/geolocation/cast_access_token_store.h" | 39 #include "chromecast/browser/geolocation/cast_access_token_store.h" |
38 #include "chromecast/browser/media/media_caps_impl.h" | 40 #include "chromecast/browser/media/media_caps_impl.h" |
39 #include "chromecast/browser/metrics/cast_metrics_prefs.h" | 41 #include "chromecast/browser/metrics/cast_metrics_prefs.h" |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 } | 272 } |
271 } | 273 } |
272 | 274 |
273 } // namespace | 275 } // namespace |
274 | 276 |
275 CastBrowserMainParts::CastBrowserMainParts( | 277 CastBrowserMainParts::CastBrowserMainParts( |
276 const content::MainFunctionParams& parameters, | 278 const content::MainFunctionParams& parameters, |
277 URLRequestContextFactory* url_request_context_factory) | 279 URLRequestContextFactory* url_request_context_factory) |
278 : BrowserMainParts(), | 280 : BrowserMainParts(), |
279 cast_browser_process_(new CastBrowserProcess()), | 281 cast_browser_process_(new CastBrowserProcess()), |
| 282 field_trial_list_(nullptr), |
280 parameters_(parameters), | 283 parameters_(parameters), |
281 url_request_context_factory_(url_request_context_factory), | 284 url_request_context_factory_(url_request_context_factory), |
282 net_log_(new CastNetLog()), | 285 net_log_(new CastNetLog()), |
283 media_caps_(new media::MediaCapsImpl()) { | 286 media_caps_(new media::MediaCapsImpl()) { |
284 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 287 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
285 AddDefaultCommandLineSwitches(command_line); | 288 AddDefaultCommandLineSwitches(command_line); |
286 | 289 |
287 #if BUILDFLAG(IS_CAST_USING_CMA_BACKEND) | 290 #if BUILDFLAG(IS_CAST_USING_CMA_BACKEND) |
288 media_resource_tracker_ = nullptr; | 291 media_resource_tracker_ = nullptr; |
289 #endif // BUILDFLAG(IS_CAST_USING_CMA_BACKEND) | 292 #endif // BUILDFLAG(IS_CAST_USING_CMA_BACKEND) |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 breakpad::CrashDumpObserver::Create(); | 408 breakpad::CrashDumpObserver::Create(); |
406 breakpad::CrashDumpObserver::GetInstance()->RegisterClient( | 409 breakpad::CrashDumpObserver::GetInstance()->RegisterClient( |
407 base::MakeUnique<breakpad::CrashDumpManager>(crash_dumps_dir, | 410 base::MakeUnique<breakpad::CrashDumpManager>(crash_dumps_dir, |
408 kAndroidMinidumpDescriptor)); | 411 kAndroidMinidumpDescriptor)); |
409 #else | 412 #else |
410 base::FilePath home_dir; | 413 base::FilePath home_dir; |
411 CHECK(PathService::Get(DIR_CAST_HOME, &home_dir)); | 414 CHECK(PathService::Get(DIR_CAST_HOME, &home_dir)); |
412 if (!base::CreateDirectory(home_dir)) | 415 if (!base::CreateDirectory(home_dir)) |
413 return 1; | 416 return 1; |
414 | 417 |
| 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 |
415 // Hook for internal code | 438 // Hook for internal code |
416 cast_browser_process_->browser_client()->PreCreateThreads(); | 439 cast_browser_process_->browser_client()->PreCreateThreads(); |
417 | 440 |
418 // Set GL strings so GPU config code can make correct feature blacklisting/ | 441 // Set GL strings so GPU config code can make correct feature blacklisting/ |
419 // whitelisting decisions. | 442 // whitelisting decisions. |
420 // Note: SetGLStrings can be called before GpuDataManager::Initialize. | 443 // Note: SetGLStrings can be called before GpuDataManager::Initialize. |
421 std::unique_ptr<CastSysInfo> sys_info = CreateSysInfo(); | 444 std::unique_ptr<CastSysInfo> sys_info = CreateSysInfo(); |
422 content::GpuDataManager::GetInstance()->SetGLStrings( | 445 content::GpuDataManager::GetInstance()->SetGLStrings( |
423 sys_info->GetGlVendor(), sys_info->GetGlRenderer(), | 446 sys_info->GetGlVendor(), sys_info->GetGlRenderer(), |
424 sys_info->GetGlVersion()); | 447 sys_info->GetGlVersion()); |
425 #endif | 448 #endif |
426 | 449 |
427 #if defined(USE_AURA) | 450 #if defined(USE_AURA) |
428 cast_browser_process_->SetCastScreen(base::WrapUnique(new CastScreen())); | 451 cast_browser_process_->SetCastScreen(base::WrapUnique(new CastScreen())); |
429 DCHECK(!display::Screen::GetScreen()); | 452 DCHECK(!display::Screen::GetScreen()); |
430 display::Screen::SetScreenInstance(cast_browser_process_->cast_screen()); | 453 display::Screen::SetScreenInstance(cast_browser_process_->cast_screen()); |
431 #endif | 454 #endif |
432 | 455 |
433 content::ChildProcessSecurityPolicy::GetInstance()->RegisterWebSafeScheme( | 456 content::ChildProcessSecurityPolicy::GetInstance()->RegisterWebSafeScheme( |
434 kChromeResourceScheme); | 457 kChromeResourceScheme); |
435 return 0; | 458 return 0; |
436 } | 459 } |
437 | 460 |
438 void CastBrowserMainParts::PreMainMessageLoopRun() { | 461 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())); | |
444 | 462 |
445 #if !defined(OS_ANDROID) | 463 #if !defined(OS_ANDROID) |
446 memory_pressure_monitor_.reset(new CastMemoryPressureMonitor()); | 464 memory_pressure_monitor_.reset(new CastMemoryPressureMonitor()); |
447 #endif // defined(OS_ANDROID) | 465 #endif // defined(OS_ANDROID) |
448 | 466 |
449 cast_browser_process_->SetNetLog(net_log_.get()); | 467 cast_browser_process_->SetNetLog(net_log_.get()); |
450 url_request_context_factory_->InitializeOnUIThread(net_log_.get()); | 468 url_request_context_factory_->InitializeOnUIThread(net_log_.get()); |
451 | 469 |
452 cast_browser_process_->SetConnectivityChecker(ConnectivityChecker::Create( | 470 cast_browser_process_->SetConnectivityChecker(ConnectivityChecker::Create( |
453 content::BrowserThread::GetTaskRunnerForThread( | 471 content::BrowserThread::GetTaskRunnerForThread( |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
564 | 582 |
565 void CastBrowserMainParts::PostDestroyThreads() { | 583 void CastBrowserMainParts::PostDestroyThreads() { |
566 #if !defined(OS_ANDROID) | 584 #if !defined(OS_ANDROID) |
567 media_resource_tracker_->FinalizeAndDestroy(); | 585 media_resource_tracker_->FinalizeAndDestroy(); |
568 media_resource_tracker_ = nullptr; | 586 media_resource_tracker_ = nullptr; |
569 #endif | 587 #endif |
570 } | 588 } |
571 | 589 |
572 } // namespace shell | 590 } // namespace shell |
573 } // namespace chromecast | 591 } // namespace chromecast |
OLD | NEW |