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

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

Issue 2836263003: Reland "[Chromecast] Use base::FeatureList to control features." (Closed)
Patch Set: Updates to cast_features_browsertest Created 3 years, 7 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 <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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698