Index: chrome/browser/about_flags.h |
diff --git a/chrome/browser/about_flags.h b/chrome/browser/about_flags.h |
index 55859db985106a932db1ab706f74d13f416c2512..ba104a9235bff7ff2bfeae30f2c28448d3853670 100644 |
--- a/chrome/browser/about_flags.h |
+++ b/chrome/browser/about_flags.h |
@@ -6,10 +6,12 @@ |
#define CHROME_BROWSER_ABOUT_FLAGS_H_ |
#include <map> |
+#include <set> |
#include <string> |
#include "base/command_line.h" |
#include "base/strings/string16.h" |
+#include "chrome/browser/about_flags_switches_histogram_ids.h" |
class PrefService; |
@@ -58,6 +60,12 @@ struct Experiment { |
const char* command_line_switch; |
// Simple switches that have no value should use "" for command_line_value. |
const char* command_line_value; |
+ |
+ // ID of command_line_switch in UMA histograms. |
+ // On ChromeOS experiments lead to chrome process restart when user logs in. |
+ // IDs of switches that lead to restart are reported. |
+ // Must be zero for entries without command_line_switches. |
+ const int command_line_switch_histogram_id; |
}; |
// The internal name of the experiment. This is never shown to the user. |
@@ -85,11 +93,16 @@ struct Experiment { |
const char* command_line_switch; |
// Simple switches that have no value should use "" for command_line_value. |
const char* command_line_value; |
+ // ID of command_line_switch in UMA histograms. |
+ // (See Choice::command_line_switch_histogram_id.) |
+ // Must be zero for entries without command_line_switches. |
+ const int command_line_switch_histogram_id; |
// For ENABLE_DISABLE_VALUE, the command line switch and value to explictly |
// disable the feature. |
const char* disable_command_line_switch; |
const char* disable_command_line_value; |
+ const int disable_command_line_switch_histogram_id; |
// This is used if type is MULTI_VALUE. |
const Choice* choices; |
@@ -109,17 +122,27 @@ struct Experiment { |
// whether it should add the sentinel switches around flags. |
enum SentinelsMode { kNoSentinels, kAddSentinels }; |
+// A simple map 'command line switch' -> 'histogram ID'. |
+typedef std::map<std::string, int> SwitchesHistogramIDs; |
+ |
// Reads the Labs |prefs| (called "Labs" for historical reasons) and adds the |
// commandline flags belonging to the active experiments to |command_line|. |
void ConvertFlagsToSwitches(FlagsStorage* flags_storage, |
base::CommandLine* command_line, |
SentinelsMode sentinels); |
+// Returns a map <command_line_switch, switch_histogram_id>. |
+// Map is created if it doesn't exist. |
+const SwitchesHistogramIDs& GetSwitchesHistogramIds(); |
+ |
// Compares a set of switches of the two provided command line objects and |
// returns true if they are the same and false otherwise. |
+// If |out_difference| is not NULL, it's filled with set_symmetric_difference |
+// between sets. |
bool AreSwitchesIdenticalToCurrentCommandLine( |
const base::CommandLine& new_cmdline, |
- const base::CommandLine& active_cmdline); |
+ const base::CommandLine& active_cmdline, |
+ std::set<CommandLine::StringType>* out_difference); |
// Differentiate between generic flags available on a per session base and flags |
// that influence the whole machine and can be said by the admin only. This flag |