summaryrefslogtreecommitdiffstats
path: root/chrome/browser/about_flags.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/about_flags.cc')
-rw-r--r--chrome/browser/about_flags.cc62
1 files changed, 58 insertions, 4 deletions
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 6c81dc3..0142205 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -24,6 +24,12 @@ namespace {
const unsigned kOsAll = kOsMac | kOsWin | kOsLinux | kOsCrOS;
+// Names for former Chrome OS Labs experiments, shared with prefs migration
+// code.
+const char kMediaPlayerExperimentName[] = "media-player";
+const char kAdvancedFileSystemExperimentName[] = "advanced-file-system";
+const char kVerticalTabsExperimentName[] = "vertical-tabs";
+
const Experiment kExperiments[] = {
{
"expose-for-tabs", // Do not change; see above.
@@ -38,12 +44,34 @@ const Experiment kExperiments[] = {
#endif
},
{
- "vertical-tabs", // Do not change; see above.
+ kMediaPlayerExperimentName,
+ IDS_FLAGS_MEDIA_PLAYER_NAME,
+ IDS_FLAGS_MEDIA_PLAYER_DESCRIPTION,
+ kOsCrOS,
+#if defined(OS_CHROMEOS)
+ // The switch exists only on Chrome OS.
+ switches::kEnableMediaPlayer
+#else
+ ""
+#endif
+ },
+ {
+ kAdvancedFileSystemExperimentName,
+ IDS_FLAGS_ADVANCED_FS_NAME,
+ IDS_FLAGS_ADVANCED_FS_DESCRIPTION,
+ kOsCrOS,
+#if defined(OS_CHROMEOS)
+ // The switch exists only on Chrome OS.
+ switches::kEnableAdvancedFileSystem
+#else
+ ""
+#endif
+ },
+ {
+ kVerticalTabsExperimentName,
IDS_FLAGS_SIDE_TABS_NAME,
IDS_FLAGS_SIDE_TABS_DESCRIPTION,
- // TODO(thakis): Move sidetabs to about:flags on ChromeOS
- // http://crbug.com/57634
- kOsWin,
+ kOsWin | kOsCrOS,
switches::kEnableVerticalTabs
},
{
@@ -221,6 +249,25 @@ class FlagsState {
DISALLOW_COPY_AND_ASSIGN(FlagsState);
};
+#if defined(OS_CHROMEOS)
+// Migrates Chrome OS Labs settings to experiments adding flags to enabled
+// experiment list if the corresponding pref is on.
+void MigrateChromeOSLabsPrefs(PrefService* prefs,
+ std::set<std::string>* result) {
+ DCHECK(prefs);
+ DCHECK(result);
+ if (prefs->GetBoolean(prefs::kLabsMediaplayerEnabled))
+ result->insert(kMediaPlayerExperimentName);
+ if (prefs->GetBoolean(prefs::kLabsAdvancedFilesystemEnabled))
+ result->insert(kAdvancedFileSystemExperimentName);
+ if (prefs->GetBoolean(prefs::kUseVerticalTabs))
+ result->insert(kVerticalTabsExperimentName);
+ prefs->SetBoolean(prefs::kLabsMediaplayerEnabled, false);
+ prefs->SetBoolean(prefs::kLabsAdvancedFilesystemEnabled, false);
+ prefs->SetBoolean(prefs::kUseVerticalTabs, false);
+}
+#endif
+
// Extracts the list of enabled lab experiments from preferences and stores them
// in a set.
void GetEnabledFlags(const PrefService* prefs, std::set<std::string>* result) {
@@ -380,6 +427,13 @@ void FlagsState::ConvertFlagsToSwitches(
return;
std::set<std::string> enabled_experiments;
+
+#if defined(OS_CHROMEOS)
+ // Some experiments were implemented via prefs on Chrome OS and we want to
+ // seamlessly migrate these prefs to about:flags for updated users.
+ MigrateChromeOSLabsPrefs(prefs, &enabled_experiments);
+#endif
+
GetSanitizedEnabledFlagsForCurrentPlatform(prefs, &enabled_experiments);
std::map<std::string, const Experiment*> experiment_map;