diff options
Diffstat (limited to 'chrome/browser/about_flags.cc')
-rw-r--r-- | chrome/browser/about_flags.cc | 62 |
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; |