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

Unified 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, 8 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 side-by-side diff with in-line comments
Download patch
Index: chromecast/browser/cast_browser_main_parts.cc
diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc
index ccb0fa874aa8c87c1a354ff3640c59041160c6de..75c39e0506e161d5ba32794645d07e2d1fa810a1 100644
--- a/chromecast/browser/cast_browser_main_parts.cc
+++ b/chromecast/browser/cast_browser_main_parts.cc
@@ -22,11 +22,13 @@
#include "build/build_config.h"
#include "cc/base/switches.h"
#include "chromecast/base/cast_constants.h"
+#include "chromecast/base/cast_features.h"
#include "chromecast/base/cast_paths.h"
#include "chromecast/base/cast_sys_info_util.h"
#include "chromecast/base/chromecast_switches.h"
#include "chromecast/base/metrics/cast_metrics_helper.h"
#include "chromecast/base/metrics/grouped_histogram.h"
+#include "chromecast/base/pref_names.h"
#include "chromecast/base/version.h"
#include "chromecast/browser/cast_browser_context.h"
#include "chromecast/browser/cast_browser_process.h"
@@ -277,6 +279,7 @@ CastBrowserMainParts::CastBrowserMainParts(
URLRequestContextFactory* url_request_context_factory)
: BrowserMainParts(),
cast_browser_process_(new CastBrowserProcess()),
+ field_trial_list_(nullptr),
parameters_(parameters),
url_request_context_factory_(url_request_context_factory),
net_log_(new CastNetLog()),
@@ -412,6 +415,26 @@ int CastBrowserMainParts::PreCreateThreads() {
if (!base::CreateDirectory(home_dir))
return 1;
+ scoped_refptr<PrefRegistrySimple> pref_registry(new PrefRegistrySimple());
+ metrics::RegisterPrefs(pref_registry.get());
+ PrefProxyConfigTrackerImpl::RegisterPrefs(pref_registry.get());
+ cast_browser_process_->SetPrefService(
+ PrefServiceHelper::CreatePrefService(pref_registry.get()));
+
+ // As soon as the PrefService is set, initialize the base::FeatureList, so
+ // objects initialized after this point can use features from
+ // base::FeatureList.
+ const auto* features_dict =
+ cast_browser_process_->pref_service()->GetDictionary(
+ prefs::kLatestDCSFeatures);
+ const auto* experiment_ids = cast_browser_process_->pref_service()->GetList(
+ prefs::kActiveDCSExperiments);
+ auto* command_line = base::CommandLine::ForCurrentProcess();
+ InitializeFeatureList(
+ *features_dict, *experiment_ids,
+ command_line->GetSwitchValueASCII(switches::kEnableFeatures),
+ command_line->GetSwitchValueASCII(switches::kDisableFeatures));
+
// Hook for internal code
cast_browser_process_->browser_client()->PreCreateThreads();
@@ -436,11 +459,6 @@ int CastBrowserMainParts::PreCreateThreads() {
}
void CastBrowserMainParts::PreMainMessageLoopRun() {
- scoped_refptr<PrefRegistrySimple> pref_registry(new PrefRegistrySimple());
- metrics::RegisterPrefs(pref_registry.get());
- PrefProxyConfigTrackerImpl::RegisterPrefs(pref_registry.get());
- cast_browser_process_->SetPrefService(
- PrefServiceHelper::CreatePrefService(pref_registry.get()));
#if !defined(OS_ANDROID)
memory_pressure_monitor_.reset(new CastMemoryPressureMonitor());

Powered by Google App Engine
This is Rietveld 408576698