Chromium Code Reviews| Index: chrome/browser/about_flags.cc |
| diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc |
| index 366e173ce396597b250610bfe640e6b5d5799012..40fe0742b96f0f9c45cd95d18c6c44fa0c24d3ef 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 |
| }, |
| { |
| @@ -228,6 +256,20 @@ class FlagsState { |
| DISALLOW_COPY_AND_ASSIGN(FlagsState); |
| }; |
| +#if defined(OS_CHROMEOS) |
| +void MigrateChromeOSLabsPrefs(const 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); |
|
Nico
2010/11/16 17:32:07
do you want to remove the booleans from |prefs| af
whywhat
2010/11/16 17:55:15
Can I remove them? I only found how I can set them
Nico
2010/11/16 18:01:31
PrefService::ClearPref
whywhat
2010/11/16 18:05:03
This sets the value to default one. If it ever bec
|
| +} |
| +#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) { |
| @@ -246,6 +288,12 @@ void GetEnabledFlags(const PrefService* prefs, std::set<std::string>* result) { |
| } |
| result->insert(experiment_name); |
| } |
| + |
| +#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, result); |
|
Nico
2010/11/16 17:32:07
I'd do this at the spot marked XXX below instead.
whywhat
2010/11/16 17:55:15
Done.
|
| +#endif |
| } |
| // Takes a set of enabled lab experiments |