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

Side by Side Diff: chrome/browser/about_flags.cc

Issue 344883002: Collect UMA statistics on which chrome://flags lead to chrome restart on ChromeOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move ReportCustomFlags to about_flags.cc Created 6 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/about_flags.h" 5 #include "chrome/browser/about_flags.h"
6 6
7 #include <iterator> 7 #include <iterator>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/memory/singleton.h" 13 #include "base/memory/singleton.h"
14 #include "base/metrics/sparse_histogram.h"
14 #include "base/stl_util.h" 15 #include "base/stl_util.h"
15 #include "base/strings/string_number_conversions.h" 16 #include "base/strings/string_number_conversions.h"
16 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
17 #include "base/values.h" 18 #include "base/values.h"
18 #include "cc/base/switches.h" 19 #include "cc/base/switches.h"
19 #include "chrome/browser/bookmarks/enhanced_bookmarks_features.h" 20 #include "chrome/browser/bookmarks/enhanced_bookmarks_features.h"
20 #include "chrome/browser/flags_storage.h" 21 #include "chrome/browser/flags_storage.h"
21 #include "chrome/common/chrome_content_client.h" 22 #include "chrome/common/chrome_content_client.h"
22 #include "chrome/common/chrome_switches.h" 23 #include "chrome/common/chrome_switches.h"
23 #include "components/autofill/core/common/autofill_switches.h" 24 #include "components/autofill/core/common/autofill_switches.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 56
56 #if defined(ENABLE_APP_LIST) 57 #if defined(ENABLE_APP_LIST)
57 #include "ui/app_list/app_list_switches.h" 58 #include "ui/app_list/app_list_switches.h"
58 #endif 59 #endif
59 60
60 using base::UserMetricsAction; 61 using base::UserMetricsAction;
61 62
62 namespace about_flags { 63 namespace about_flags {
63 64
64 // Macros to simplify specifying the type. 65 // Macros to simplify specifying the type.
65 #define SINGLE_VALUE_TYPE_AND_VALUE(command_line_switch, switch_value) \ 66 #define SINGLE_VALUE_TYPE_AND_VALUE( \
66 Experiment::SINGLE_VALUE, \ 67 command_line_switch, switch_value, switch_uma_id) \
67 command_line_switch, switch_value, NULL, NULL, NULL, 0 68 Experiment::SINGLE_VALUE, command_line_switch, switch_value, switch_uma_id, \
68 #define SINGLE_VALUE_TYPE(command_line_switch) \ 69 NULL, NULL, 0, NULL, 0
69 SINGLE_VALUE_TYPE_AND_VALUE(command_line_switch, "") 70 #define SINGLE_VALUE_TYPE(command_line_switch, switch_uma_id) \
70 #define ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(enable_switch, enable_value, \ 71 SINGLE_VALUE_TYPE_AND_VALUE(command_line_switch, "", switch_uma_id)
71 disable_switch, disable_value) \ 72 #define ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(enable_switch, \
72 Experiment::ENABLE_DISABLE_VALUE, enable_switch, enable_value, \ 73 enable_value, \
73 disable_switch, disable_value, NULL, 3 74 enable_switch_uma_id, \
74 #define ENABLE_DISABLE_VALUE_TYPE(enable_switch, disable_switch) \ 75 disable_switch, \
75 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(enable_switch, "", disable_switch, "") 76 disable_value, \
76 #define MULTI_VALUE_TYPE(choices) \ 77 disable_switch_uma_id) \
77 Experiment::MULTI_VALUE, NULL, NULL, NULL, NULL, choices, arraysize(choices) 78 Experiment::ENABLE_DISABLE_VALUE, enable_switch, enable_value, \
79 enable_switch_uma_id, disable_switch, disable_value, \
80 disable_switch_uma_id, NULL, 3
81 #define ENABLE_DISABLE_VALUE_TYPE(enable_switch, \
82 enable_switch_uma_id, \
83 disable_switch, \
84 disable_switch_uma_id) \
85 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(enable_switch, \
86 "", \
87 enable_switch_uma_id, \
88 disable_switch, \
89 "", \
90 disable_switch_uma_id)
91 #define MULTI_VALUE_TYPE(choices) \
92 Experiment::MULTI_VALUE, NULL, NULL, 0, NULL, NULL, 0, choices, \
93 arraysize(choices)
78 94
79 namespace { 95 namespace {
80 96
81 const unsigned kOsAll = kOsMac | kOsWin | kOsLinux | kOsCrOS | kOsAndroid; 97 const unsigned kOsAll = kOsMac | kOsWin | kOsLinux | kOsCrOS | kOsAndroid;
82 const unsigned kOsDesktop = kOsMac | kOsWin | kOsLinux | kOsCrOS; 98 const unsigned kOsDesktop = kOsMac | kOsWin | kOsLinux | kOsCrOS;
83 99
84 // Adds a |StringValue| to |list| for each platform where |bitmask| indicates 100 // Adds a |StringValue| to |list| for each platform where |bitmask| indicates
85 // whether the experiment is available on that platform. 101 // whether the experiment is available on that platform.
86 void AddOsStrings(unsigned bitmask, base::ListValue* list) { 102 void AddOsStrings(unsigned bitmask, base::ListValue* list) {
87 struct { 103 struct {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 GetSwitchString(chromeos::switches::kPolicySwitchesBegin)); 143 GetSwitchString(chromeos::switches::kPolicySwitchesBegin));
128 last = std::find(cmdline.argv().begin(), cmdline.argv().end(), 144 last = std::find(cmdline.argv().begin(), cmdline.argv().end(),
129 GetSwitchString(chromeos::switches::kPolicySwitchesEnd)); 145 GetSwitchString(chromeos::switches::kPolicySwitchesEnd));
130 if (first != cmdline.argv().end() && last != cmdline.argv().end()) 146 if (first != cmdline.argv().end() && last != cmdline.argv().end())
131 flags.insert(first + 1, last); 147 flags.insert(first + 1, last);
132 #endif 148 #endif
133 return flags; 149 return flags;
134 } 150 }
135 151
136 const Experiment::Choice kEnableCompositingForFixedPositionChoices[] = { 152 const Experiment::Choice kEnableCompositingForFixedPositionChoices[] = {
137 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 153 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
138 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 154 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
139 switches::kEnableCompositingForFixedPosition, ""}, 155 switches::kEnableCompositingForFixedPosition, "",
156 UMA_HISTOGRAM_ID_kEnableCompositingForFixedPosition },
140 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 157 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
141 switches::kDisableCompositingForFixedPosition, ""}, 158 switches::kDisableCompositingForFixedPosition, "",
159 UMA_HISTOGRAM_ID_kDisableCompositingForFixedPosition },
142 { IDS_FLAGS_COMPOSITING_FOR_FIXED_POSITION_HIGH_DPI, 160 { IDS_FLAGS_COMPOSITING_FOR_FIXED_POSITION_HIGH_DPI,
143 switches::kEnableHighDpiCompositingForFixedPosition, ""} 161 switches::kEnableHighDpiCompositingForFixedPosition, "",
162 UMA_HISTOGRAM_ID_kEnableHighDpiCompositingForFixedPosition }
144 }; 163 };
145 164
146 const Experiment::Choice kEnableCompositingForTransitionChoices[] = { 165 const Experiment::Choice kEnableCompositingForTransitionChoices[] = {
147 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 166 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
148 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 167 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
149 switches::kEnableCompositingForTransition, ""}, 168 switches::kEnableCompositingForTransition, "",
169 UMA_HISTOGRAM_ID_kEnableCompositingForTransition },
150 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 170 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
151 switches::kDisableCompositingForTransition, ""}, 171 switches::kDisableCompositingForTransition, "",
172 UMA_HISTOGRAM_ID_kDisableCompositingForTransition },
152 }; 173 };
153 174
154 const Experiment::Choice kEnableAcceleratedFixedRootBackgroundChoices[] = { 175 const Experiment::Choice kEnableAcceleratedFixedRootBackgroundChoices[] = {
155 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 176 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
156 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 177 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
157 switches::kEnableAcceleratedFixedRootBackground, ""}, 178 switches::kEnableAcceleratedFixedRootBackground, "",
179 UMA_HISTOGRAM_ID_kEnableAcceleratedFixedRootBackground },
158 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 180 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
159 switches::kDisableAcceleratedFixedRootBackground, ""}, 181 switches::kDisableAcceleratedFixedRootBackground, "",
182 UMA_HISTOGRAM_ID_kDisableAcceleratedFixedRootBackground },
160 }; 183 };
161 184
162 const Experiment::Choice kTouchEventsChoices[] = { 185 const Experiment::Choice kTouchEventsChoices[] = {
163 { IDS_GENERIC_EXPERIMENT_CHOICE_AUTOMATIC, "", "" }, 186 { IDS_GENERIC_EXPERIMENT_CHOICE_AUTOMATIC, "", "", 0 },
164 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 187 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
165 switches::kTouchEvents, 188 switches::kTouchEvents,
166 switches::kTouchEventsEnabled }, 189 switches::kTouchEventsEnabled,
190 UMA_HISTOGRAM_ID_kTouchEvents },
167 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 191 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
168 switches::kTouchEvents, 192 switches::kTouchEvents,
169 switches::kTouchEventsDisabled } 193 switches::kTouchEventsDisabled,
194 UMA_HISTOGRAM_ID_kTouchEvents }
170 }; 195 };
171 196
172 #if defined(USE_AURA) 197 #if defined(USE_AURA)
173 const Experiment::Choice kOverscrollHistoryNavigationChoices[] = { 198 const Experiment::Choice kOverscrollHistoryNavigationChoices[] = {
174 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, "", "" }, 199 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, "", "", 0 },
175 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 200 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
176 switches::kOverscrollHistoryNavigation, 201 switches::kOverscrollHistoryNavigation,
177 "0" }, 202 "0",
203 UMA_HISTOGRAM_ID_kOverscrollHistoryNavigation },
178 { IDS_OVERSCROLL_HISTORY_NAVIGATION_SIMPLE_UI, 204 { IDS_OVERSCROLL_HISTORY_NAVIGATION_SIMPLE_UI,
179 switches::kOverscrollHistoryNavigation, 205 switches::kOverscrollHistoryNavigation,
180 "2" } 206 "2",
207 UMA_HISTOGRAM_ID_kOverscrollHistoryNavigation }
181 }; 208 };
182 #endif 209 #endif
183 210
184 #if !defined(DISABLE_NACL) 211 #if !defined(DISABLE_NACL)
185 const Experiment::Choice kNaClDebugMaskChoices[] = { 212 const Experiment::Choice kNaClDebugMaskChoices[] = {
186 // Secure shell can be used on ChromeOS for forwarding the TCP port opened by 213 // Secure shell can be used on ChromeOS for forwarding the TCP port opened by
187 // debug stub to a remote machine. Since secure shell uses NaCl, we usually 214 // debug stub to a remote machine. Since secure shell uses NaCl, we usually
188 // want to avoid debugging that. The PNaCl translator is also a NaCl module, 215 // want to avoid debugging that. The PNaCl translator is also a NaCl module,
189 // so by default we want to avoid debugging that. 216 // so by default we want to avoid debugging that.
190 // NOTE: As the default value must be the empty string, the mask excluding 217 // NOTE: As the default value must be the empty string, the mask excluding
191 // the PNaCl translator and secure shell is substituted elsewhere. 218 // the PNaCl translator and secure shell is substituted elsewhere.
192 { IDS_NACL_DEBUG_MASK_CHOICE_EXCLUDE_UTILS_PNACL, "", "" }, 219 { IDS_NACL_DEBUG_MASK_CHOICE_EXCLUDE_UTILS_PNACL, "", "", 0 },
193 { IDS_NACL_DEBUG_MASK_CHOICE_DEBUG_ALL, switches::kNaClDebugMask, "*://*" }, 220 { IDS_NACL_DEBUG_MASK_CHOICE_DEBUG_ALL, switches::kNaClDebugMask, "*://*",
194 { IDS_NACL_DEBUG_MASK_CHOICE_INCLUDE_DEBUG, 221 UMA_HISTOGRAM_ID_kNaClDebugMask },
195 switches::kNaClDebugMask, "*://*/*debug.nmf" } 222 { IDS_NACL_DEBUG_MASK_CHOICE_INCLUDE_DEBUG, switches::kNaClDebugMask,
223 "*://*/*debug.nmf", UMA_HISTOGRAM_ID_kNaClDebugMask }
196 }; 224 };
197 #endif 225 #endif
198 226
199 const Experiment::Choice kImplSidePaintingChoices[] = { 227 const Experiment::Choice kImplSidePaintingChoices[] = {
200 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 228 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
201 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 229 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
202 switches::kEnableImplSidePainting, ""}, 230 switches::kEnableImplSidePainting, "",
231 UMA_HISTOGRAM_ID_kEnableImplSidePainting },
203 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 232 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
204 switches::kDisableImplSidePainting, ""} 233 switches::kDisableImplSidePainting, "",
234 UMA_HISTOGRAM_ID_kDisableImplSidePainting }
205 }; 235 };
206 236
207 const Experiment::Choice kLCDTextChoices[] = { 237 const Experiment::Choice kLCDTextChoices[] = {
208 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 238 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
209 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, switches::kEnableLCDText, ""}, 239 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, switches::kEnableLCDText, "",
210 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, switches::kDisableLCDText, ""} 240 UMA_HISTOGRAM_ID_kEnableLCDText },
241 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, switches::kDisableLCDText, "",
242 UMA_HISTOGRAM_ID_kDisableLCDText }
211 }; 243 };
212 244
213 const Experiment::Choice kDistanceFieldTextChoices[] = { 245 const Experiment::Choice kDistanceFieldTextChoices[] = {
214 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 246 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
215 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 247 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
216 switches::kEnableDistanceFieldText, "" }, 248 switches::kEnableDistanceFieldText, "",
249 UMA_HISTOGRAM_ID_kEnableDistanceFieldText },
217 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 250 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
218 switches::kDisableDistanceFieldText, "" } 251 switches::kDisableDistanceFieldText, "",
252 UMA_HISTOGRAM_ID_kDisableDistanceFieldText }
219 }; 253 };
220 254
221 #ifndef USE_AURA 255 #ifndef USE_AURA
222 const Experiment::Choice kDelegatedRendererChoices[] = { 256 const Experiment::Choice kDelegatedRendererChoices[] = {
223 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 257 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
224 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 258 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
225 switches::kEnableDelegatedRenderer, ""}, 259 switches::kEnableDelegatedRenderer, "",
260 UMA_HISTOGRAM_ID_kEnableDelegatedRenderer },
226 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 261 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
227 switches::kDisableDelegatedRenderer, ""} 262 switches::kDisableDelegatedRenderer, "",
263 UMA_HISTOGRAM_ID_kDisableDelegatedRenderer }
228 }; 264 };
229 #endif 265 #endif
230 266
231 const Experiment::Choice kMaxTilesForInterestAreaChoices[] = { 267 const Experiment::Choice kMaxTilesForInterestAreaChoices[] = {
232 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 268 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
233 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_SHORT, 269 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_SHORT,
234 cc::switches::kMaxTilesForInterestArea, "64"}, 270 cc::switches::kMaxTilesForInterestArea, "64",
271 UMA_HISTOGRAM_ID_kMaxTilesForInterestArea },
235 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_TALL, 272 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_TALL,
236 cc::switches::kMaxTilesForInterestArea, "128"}, 273 cc::switches::kMaxTilesForInterestArea, "128",
274 UMA_HISTOGRAM_ID_kMaxTilesForInterestArea },
237 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_GRANDE, 275 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_GRANDE,
238 cc::switches::kMaxTilesForInterestArea, "256"}, 276 cc::switches::kMaxTilesForInterestArea, "256",
277 UMA_HISTOGRAM_ID_kMaxTilesForInterestArea },
239 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_VENTI, 278 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_VENTI,
240 cc::switches::kMaxTilesForInterestArea, "512"} 279 cc::switches::kMaxTilesForInterestArea, "512",
280 UMA_HISTOGRAM_ID_kMaxTilesForInterestArea }
241 }; 281 };
242 282
243 const Experiment::Choice kDefaultTileWidthChoices[] = { 283 const Experiment::Choice kDefaultTileWidthChoices[] = {
244 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 284 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
245 { IDS_FLAGS_DEFAULT_TILE_WIDTH_SHORT, 285 { IDS_FLAGS_DEFAULT_TILE_WIDTH_SHORT,
246 switches::kDefaultTileWidth, "128"}, 286 switches::kDefaultTileWidth, "128", UMA_HISTOGRAM_ID_kDefaultTileWidth },
247 { IDS_FLAGS_DEFAULT_TILE_WIDTH_TALL, 287 { IDS_FLAGS_DEFAULT_TILE_WIDTH_TALL,
248 switches::kDefaultTileWidth, "256"}, 288 switches::kDefaultTileWidth, "256", UMA_HISTOGRAM_ID_kDefaultTileWidth },
249 { IDS_FLAGS_DEFAULT_TILE_WIDTH_GRANDE, 289 { IDS_FLAGS_DEFAULT_TILE_WIDTH_GRANDE,
250 switches::kDefaultTileWidth, "512"}, 290 switches::kDefaultTileWidth, "512", UMA_HISTOGRAM_ID_kDefaultTileWidth },
251 { IDS_FLAGS_DEFAULT_TILE_WIDTH_VENTI, 291 { IDS_FLAGS_DEFAULT_TILE_WIDTH_VENTI,
252 switches::kDefaultTileWidth, "1024"} 292 switches::kDefaultTileWidth, "1024", UMA_HISTOGRAM_ID_kDefaultTileWidth }
253 }; 293 };
254 294
255 const Experiment::Choice kDefaultTileHeightChoices[] = { 295 const Experiment::Choice kDefaultTileHeightChoices[] = {
256 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 296 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
257 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_SHORT, 297 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_SHORT,
258 switches::kDefaultTileHeight, "128"}, 298 switches::kDefaultTileHeight, "128", UMA_HISTOGRAM_ID_kDefaultTileHeight },
259 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_TALL, 299 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_TALL,
260 switches::kDefaultTileHeight, "256"}, 300 switches::kDefaultTileHeight, "256", UMA_HISTOGRAM_ID_kDefaultTileHeight },
261 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_GRANDE, 301 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_GRANDE,
262 switches::kDefaultTileHeight, "512"}, 302 switches::kDefaultTileHeight, "512", UMA_HISTOGRAM_ID_kDefaultTileHeight },
263 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_VENTI, 303 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_VENTI,
264 switches::kDefaultTileHeight, "1024"} 304 switches::kDefaultTileHeight, "1024", UMA_HISTOGRAM_ID_kDefaultTileHeight }
265 }; 305 };
266 306
267 const Experiment::Choice kSimpleCacheBackendChoices[] = { 307 const Experiment::Choice kSimpleCacheBackendChoices[] = {
268 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 308 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
269 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 309 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
270 switches::kUseSimpleCacheBackend, "off" }, 310 switches::kUseSimpleCacheBackend, "off",
311 UMA_HISTOGRAM_ID_kUseSimpleCacheBackend },
271 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 312 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
272 switches::kUseSimpleCacheBackend, "on"} 313 switches::kUseSimpleCacheBackend, "on",
314 UMA_HISTOGRAM_ID_kUseSimpleCacheBackend }
273 }; 315 };
274 316
275 #if defined(USE_AURA) 317 #if defined(USE_AURA)
276 const Experiment::Choice kTabCaptureUpscaleQualityChoices[] = { 318 const Experiment::Choice kTabCaptureUpscaleQualityChoices[] = {
277 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 319 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
278 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_FAST, 320 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_FAST,
279 switches::kTabCaptureUpscaleQuality, "fast" }, 321 switches::kTabCaptureUpscaleQuality, "fast",
322 UMA_HISTOGRAM_ID_kTabCaptureUpscaleQuality },
280 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_GOOD, 323 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_GOOD,
281 switches::kTabCaptureUpscaleQuality, "good" }, 324 switches::kTabCaptureUpscaleQuality, "good",
325 UMA_HISTOGRAM_ID_kTabCaptureUpscaleQuality },
282 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_BEST, 326 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_BEST,
283 switches::kTabCaptureUpscaleQuality, "best" }, 327 switches::kTabCaptureUpscaleQuality, "best",
328 UMA_HISTOGRAM_ID_kTabCaptureUpscaleQuality },
284 }; 329 };
285 330
286 const Experiment::Choice kTabCaptureDownscaleQualityChoices[] = { 331 const Experiment::Choice kTabCaptureDownscaleQualityChoices[] = {
287 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 332 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
288 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_FAST, 333 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_FAST,
289 switches::kTabCaptureDownscaleQuality, "fast" }, 334 switches::kTabCaptureDownscaleQuality, "fast",
335 UMA_HISTOGRAM_ID_kTabCaptureDownscaleQuality },
290 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_GOOD, 336 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_GOOD,
291 switches::kTabCaptureDownscaleQuality, "good" }, 337 switches::kTabCaptureDownscaleQuality, "good",
338 UMA_HISTOGRAM_ID_kTabCaptureDownscaleQuality },
292 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_BEST, 339 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_BEST,
293 switches::kTabCaptureDownscaleQuality, "best" }, 340 switches::kTabCaptureDownscaleQuality, "best",
341 UMA_HISTOGRAM_ID_kTabCaptureDownscaleQuality },
294 }; 342 };
295 #endif 343 #endif
296 344
297 #if defined(USE_AURA) || defined(OS_LINUX) 345 #if defined(USE_AURA) || defined(OS_LINUX)
298 const Experiment::Choice kOverlayScrollbarChoices[] = { 346 const Experiment::Choice kOverlayScrollbarChoices[] = {
299 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 347 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
300 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 348 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
301 switches::kEnableOverlayScrollbar, ""}, 349 switches::kEnableOverlayScrollbar, "",
350 UMA_HISTOGRAM_ID_kEnableOverlayScrollbar },
302 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 351 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
303 switches::kDisableOverlayScrollbar, ""} 352 switches::kDisableOverlayScrollbar, "",
353 UMA_HISTOGRAM_ID_kDisableOverlayScrollbar }
304 }; 354 };
305 #endif 355 #endif
306 356
307 const Experiment::Choice kZeroCopyChoices[] = { 357 const Experiment::Choice kZeroCopyChoices[] = {
308 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 358 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
309 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 359 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
310 switches::kEnableZeroCopy, ""}, 360 switches::kEnableZeroCopy, "", UMA_HISTOGRAM_ID_kEnableZeroCopy },
311 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 361 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
312 switches::kDisableZeroCopy, ""} 362 switches::kDisableZeroCopy, "", UMA_HISTOGRAM_ID_kDisableZeroCopy }
313 }; 363 };
314 364
315 #if defined(OS_ANDROID) 365 #if defined(OS_ANDROID)
316 const Experiment::Choice kZeroSuggestExperimentsChoices[] = { 366 const Experiment::Choice kZeroSuggestExperimentsChoices[] = {
317 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 367 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
318 { IDS_FLAGS_ZERO_SUGGEST_MOST_VISITED, 368 { IDS_FLAGS_ZERO_SUGGEST_MOST_VISITED,
319 switches::kEnableZeroSuggestMostVisited, ""}, 369 switches::kEnableZeroSuggestMostVisited, "",
370 UMA_HISTOGRAM_ID_kEnableZeroSuggestMostVisited },
320 { IDS_FLAGS_ZERO_SUGGEST_ETHER_SERP, 371 { IDS_FLAGS_ZERO_SUGGEST_ETHER_SERP,
321 switches::kEnableZeroSuggestEtherSerp, ""}, 372 switches::kEnableZeroSuggestEtherSerp, "",
373 UMA_HISTOGRAM_ID_kEnableZeroSuggestEtherSerp },
322 { IDS_FLAGS_ZERO_SUGGEST_ETHER_NO_SERP, 374 { IDS_FLAGS_ZERO_SUGGEST_ETHER_NO_SERP,
323 switches::kEnableZeroSuggestEtherNoSerp, ""}, 375 switches::kEnableZeroSuggestEtherNoSerp, "",
376 UMA_HISTOGRAM_ID_kEnableZeroSuggestEtherNoSerp },
324 { IDS_FLAGS_ZERO_SUGGEST_PERSONALIZED, 377 { IDS_FLAGS_ZERO_SUGGEST_PERSONALIZED,
325 switches::kEnableZeroSuggestPersonalized, ""}, 378 switches::kEnableZeroSuggestPersonalized, "",
379 UMA_HISTOGRAM_ID_kEnableZeroSuggestPersonalized },
326 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 380 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
327 switches::kDisableZeroSuggest, ""} 381 switches::kDisableZeroSuggest, "", UMA_HISTOGRAM_ID_kDisableZeroSuggest }
328 }; 382 };
329 #endif 383 #endif
330 384
331 const Experiment::Choice kNumRasterThreadsChoices[] = { 385 const Experiment::Choice kNumRasterThreadsChoices[] = {
332 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 386 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
333 { IDS_FLAGS_NUM_RASTER_THREADS_ONE, switches::kNumRasterThreads, "1" }, 387 { IDS_FLAGS_NUM_RASTER_THREADS_ONE,
334 { IDS_FLAGS_NUM_RASTER_THREADS_TWO, switches::kNumRasterThreads, "2" }, 388 switches::kNumRasterThreads, "1", UMA_HISTOGRAM_ID_kNumRasterThreads },
335 { IDS_FLAGS_NUM_RASTER_THREADS_THREE, switches::kNumRasterThreads, "3" }, 389 { IDS_FLAGS_NUM_RASTER_THREADS_TWO,
336 { IDS_FLAGS_NUM_RASTER_THREADS_FOUR, switches::kNumRasterThreads, "4" } 390 switches::kNumRasterThreads, "2", UMA_HISTOGRAM_ID_kNumRasterThreads },
391 { IDS_FLAGS_NUM_RASTER_THREADS_THREE,
392 switches::kNumRasterThreads, "3", UMA_HISTOGRAM_ID_kNumRasterThreads },
393 { IDS_FLAGS_NUM_RASTER_THREADS_FOUR,
394 switches::kNumRasterThreads, "4", UMA_HISTOGRAM_ID_kNumRasterThreads }
337 }; 395 };
338 396
339 const Experiment::Choice kEnableGpuRasterizationChoices[] = { 397 const Experiment::Choice kEnableGpuRasterizationChoices[] = {
340 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 398 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
341 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 399 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
342 switches::kEnableGpuRasterization, "" }, 400 switches::kEnableGpuRasterization, "",
401 UMA_HISTOGRAM_ID_kEnableGpuRasterization },
343 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 402 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
344 switches::kDisableGpuRasterization, "" }, 403 switches::kDisableGpuRasterization, "",
404 UMA_HISTOGRAM_ID_kDisableGpuRasterization },
345 { IDS_FLAGS_FORCE_GPU_RASTERIZATION, 405 { IDS_FLAGS_FORCE_GPU_RASTERIZATION,
346 switches::kForceGpuRasterization, "" }, 406 switches::kForceGpuRasterization, "",
407 UMA_HISTOGRAM_ID_kForceGpuRasterization },
347 }; 408 };
348 409
349 // We're using independent flags here (as opposed to a common flag with 410 // We're using independent flags here (as opposed to a common flag with
350 // different values) to be able to enable/disable the entire experience 411 // different values) to be able to enable/disable the entire experience
351 // associated with this feature server-side from the FieldTrial (the complete 412 // associated with this feature server-side from the FieldTrial (the complete
352 // experience includes other flag changes as well). It is not currently possible 413 // experience includes other flag changes as well). It is not currently possible
353 // to do that with "flag=value" flags. 414 // to do that with "flag=value" flags.
354 const Experiment::Choice kSearchButtonInOmniboxChoices[] = { 415 const Experiment::Choice kSearchButtonInOmniboxChoices[] = {
355 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 416 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
356 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 417 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
357 switches::kDisableSearchButtonInOmnibox, ""}, 418 switches::kDisableSearchButtonInOmnibox, "",
419 UMA_HISTOGRAM_ID_kDisableSearchButtonInOmnibox },
358 { IDS_FLAGS_SEARCH_BUTTON_IN_OMNIBOX_ENABLE_FOR_STR, 420 { IDS_FLAGS_SEARCH_BUTTON_IN_OMNIBOX_ENABLE_FOR_STR,
359 switches::kEnableSearchButtonInOmniboxForStr, ""}, 421 switches::kEnableSearchButtonInOmniboxForStr, "",
422 UMA_HISTOGRAM_ID_kEnableSearchButtonInOmniboxForStr },
360 { IDS_FLAGS_SEARCH_BUTTON_IN_OMNIBOX_ENABLE_FOR_STR_OR_IIP, 423 { IDS_FLAGS_SEARCH_BUTTON_IN_OMNIBOX_ENABLE_FOR_STR_OR_IIP,
361 switches::kEnableSearchButtonInOmniboxForStrOrIip, ""}, 424 switches::kEnableSearchButtonInOmniboxForStrOrIip, "",
425 UMA_HISTOGRAM_ID_kEnableSearchButtonInOmniboxForStrOrIip },
362 { IDS_FLAGS_SEARCH_BUTTON_IN_OMNIBOX_ENABLED, 426 { IDS_FLAGS_SEARCH_BUTTON_IN_OMNIBOX_ENABLED,
363 switches::kEnableSearchButtonInOmniboxAlways, ""} 427 switches::kEnableSearchButtonInOmniboxAlways, "",
428 UMA_HISTOGRAM_ID_kEnableSearchButtonInOmniboxAlways }
364 }; 429 };
365 430
366 // See comment above for kSearchButtonInOmniboxChoices. The same reasoning 431 // See comment above for kSearchButtonInOmniboxChoices. The same reasoning
367 // applies here. 432 // applies here.
368 const Experiment::Choice kOriginChipChoices[] = { 433 const Experiment::Choice kOriginChipChoices[] = {
369 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 434 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
370 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, switches::kDisableOriginChip, ""}, 435 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
371 { IDS_FLAGS_ORIGIN_CHIP_ALWAYS, switches::kEnableOriginChipAlways, ""}, 436 switches::kDisableOriginChip, "", UMA_HISTOGRAM_ID_kDisableOriginChip },
372 { IDS_FLAGS_ORIGIN_CHIP_ON_SRP, switches::kEnableOriginChipOnSrp, ""} 437 { IDS_FLAGS_ORIGIN_CHIP_ALWAYS,
438 switches::kEnableOriginChipAlways, "",
439 UMA_HISTOGRAM_ID_kEnableOriginChipAlways },
440 { IDS_FLAGS_ORIGIN_CHIP_ON_SRP,
441 switches::kEnableOriginChipOnSrp, "",
442 UMA_HISTOGRAM_ID_kEnableOriginChipOnSrp }
373 }; 443 };
374 444
375 const Experiment::Choice kTouchScrollingModeChoices[] = { 445 const Experiment::Choice kTouchScrollingModeChoices[] = {
376 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 446 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
377 { IDS_FLAGS_TOUCH_SCROLLING_MODE_TOUCHCANCEL, 447 { IDS_FLAGS_TOUCH_SCROLLING_MODE_TOUCHCANCEL,
378 switches::kTouchScrollingMode, 448 switches::kTouchScrollingMode,
379 switches::kTouchScrollingModeTouchcancel }, 449 switches::kTouchScrollingModeTouchcancel,
450 UMA_HISTOGRAM_ID_kTouchScrollingMode },
380 { IDS_FLAGS_TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE, 451 { IDS_FLAGS_TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE,
381 switches::kTouchScrollingMode, 452 switches::kTouchScrollingMode,
382 switches::kTouchScrollingModeAsyncTouchmove }, 453 switches::kTouchScrollingModeAsyncTouchmove,
454 UMA_HISTOGRAM_ID_kTouchScrollingMode },
383 { IDS_FLAGS_TOUCH_SCROLLING_MODE_SYNC_TOUCHMOVE, 455 { IDS_FLAGS_TOUCH_SCROLLING_MODE_SYNC_TOUCHMOVE,
384 switches::kTouchScrollingMode, 456 switches::kTouchScrollingMode,
385 switches::kTouchScrollingModeSyncTouchmove }, 457 switches::kTouchScrollingModeSyncTouchmove,
458 UMA_HISTOGRAM_ID_kTouchScrollingMode },
386 }; 459 };
387 460
388 #if defined(ENABLE_APP_LIST) 461 #if defined(ENABLE_APP_LIST)
389 const Experiment::Choice kEnableSyncAppListChoices[] = { 462 const Experiment::Choice kEnableSyncAppListChoices[] = {
390 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 463 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
391 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 464 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
392 app_list::switches::kEnableSyncAppList, "" }, 465 app_list::switches::kEnableSyncAppList, "",
466 UMA_HISTOGRAM_ID_kEnableSyncAppList },
393 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 467 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
394 app_list::switches::kDisableSyncAppList, "" }, 468 app_list::switches::kDisableSyncAppList, "",
469 UMA_HISTOGRAM_ID_kDisableSyncAppList },
395 }; 470 };
396 #endif 471 #endif
397 472
398 const Experiment::Choice kExtensionContentVerificationChoices[] = { 473 const Experiment::Choice kExtensionContentVerificationChoices[] = {
399 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 474 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
400 { IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_BOOTSTRAP, 475 { IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_BOOTSTRAP,
401 extensions::switches::kExtensionContentVerification, 476 extensions::switches::kExtensionContentVerification,
402 extensions::switches::kExtensionContentVerificationBootstrap }, 477 extensions::switches::kExtensionContentVerificationBootstrap,
478 UMA_HISTOGRAM_ID_kExtensionContentVerification },
403 { IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_ENFORCE, 479 { IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_ENFORCE,
404 extensions::switches::kExtensionContentVerification, 480 extensions::switches::kExtensionContentVerification,
405 extensions::switches::kExtensionContentVerificationEnforce }, 481 extensions::switches::kExtensionContentVerificationEnforce,
482 UMA_HISTOGRAM_ID_kExtensionContentVerification },
406 { IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_ENFORCE_STRICT, 483 { IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_ENFORCE_STRICT,
407 extensions::switches::kExtensionContentVerification, 484 extensions::switches::kExtensionContentVerification,
408 extensions::switches::kExtensionContentVerificationEnforceStrict }, 485 extensions::switches::kExtensionContentVerificationEnforceStrict,
486 UMA_HISTOGRAM_ID_kExtensionContentVerification },
409 }; 487 };
410 488
411 // Using independent flags (instead of flag=value flags) to be able to 489 // Using independent flags (instead of flag=value flags) to be able to
412 // associate the version with a FieldTrial. FieldTrials don't currently support 490 // associate the version with a FieldTrial. FieldTrials don't currently support
413 // flag=value flags. 491 // flag=value flags.
414 const Experiment::Choice kSSLInterstitialVersions[] = { 492 const Experiment::Choice kSSLInterstitialVersions[] = {
415 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 493 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
416 { IDS_FLAGS_SSL_INTERSTITIAL_VERSION_V1, 494 { IDS_FLAGS_SSL_INTERSTITIAL_VERSION_V1,
417 switches::kSSLInterstitialVersionV1, "" }, 495 switches::kSSLInterstitialVersionV1, "",
496 UMA_HISTOGRAM_ID_kSSLInterstitialVersionV1 },
418 { IDS_FLAGS_SSL_INTERSTITIAL_VERSION_V2_GRAY, 497 { IDS_FLAGS_SSL_INTERSTITIAL_VERSION_V2_GRAY,
419 switches::kSSLInterstitialVersionV2Gray, "" }, 498 switches::kSSLInterstitialVersionV2Gray, "",
499 UMA_HISTOGRAM_ID_kSSLInterstitialVersionV2Gray },
420 { IDS_FLAGS_SSL_INTERSTITIAL_VERSION_V2_COLORFUL, 500 { IDS_FLAGS_SSL_INTERSTITIAL_VERSION_V2_COLORFUL,
421 switches::kSSLInterstitialVersionV2Colorful, "" }, 501 switches::kSSLInterstitialVersionV2Colorful, "",
502 UMA_HISTOGRAM_ID_kSSLInterstitialVersionV2Colorful },
422 }; 503 };
423 504
424 // Using independent flags (instead of flag=value flags) to be able to 505 // Using independent flags (instead of flag=value flags) to be able to
425 // associate the version with a FieldTrial. FieldTrials don't currently support 506 // associate the version with a FieldTrial. FieldTrials don't currently support
426 // flag=value flags. 507 // flag=value flags.
427 const Experiment::Choice kMalwareInterstitialVersions[] = { 508 const Experiment::Choice kMalwareInterstitialVersions[] = {
428 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 509 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
429 { IDS_FLAGS_MALWARE_INTERSTITIAL_VERSION_V2, 510 { IDS_FLAGS_MALWARE_INTERSTITIAL_VERSION_V2,
430 switches::kMalwareInterstitialVersionV2, "" }, 511 switches::kMalwareInterstitialVersionV2, "",
512 UMA_HISTOGRAM_ID_kMalwareInterstitialVersionV2 },
431 { IDS_FLAGS_MALWARE_INTERSTITIAL_VERSION_V3, 513 { IDS_FLAGS_MALWARE_INTERSTITIAL_VERSION_V3,
432 switches::kMalwareInterstitialVersionV3, "" }, 514 switches::kMalwareInterstitialVersionV3, "",
515 UMA_HISTOGRAM_ID_kMalwareInterstitialVersionV3 },
433 }; 516 };
434 517
435 #if defined(OS_CHROMEOS) 518 #if defined(OS_CHROMEOS)
436 const Experiment::Choice kEnableFileManagerMTPChoices[] = { 519 const Experiment::Choice kEnableFileManagerMTPChoices[] = {
437 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 520 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
438 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 521 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
439 chromeos::switches::kEnableFileManagerMTP, "true" }, 522 chromeos::switches::kEnableFileManagerMTP, "true",
523 UMA_HISTOGRAM_ID_kEnableFileManagerMTP },
440 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 524 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
441 chromeos::switches::kEnableFileManagerMTP, "false" } 525 chromeos::switches::kEnableFileManagerMTP, "false",
526 UMA_HISTOGRAM_ID_kEnableFileManagerMTP }
442 }; 527 };
443 528
444 const Experiment::Choice kEnableFileManagerNewGalleryChoices[] = { 529 const Experiment::Choice kEnableFileManagerNewGalleryChoices[] = {
445 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", ""}, 530 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
446 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 531 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
447 chromeos::switches::kFileManagerEnableNewGallery, "true"}, 532 chromeos::switches::kFileManagerEnableNewGallery, "true",
533 UMA_HISTOGRAM_ID_kFileManagerEnableNewGallery },
448 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 534 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
449 chromeos::switches::kFileManagerEnableNewGallery, "false"} 535 chromeos::switches::kFileManagerEnableNewGallery, "false",
536 UMA_HISTOGRAM_ID_kFileManagerEnableNewGallery }
450 }; 537 };
451 #endif 538 #endif
452 539
453 const Experiment::Choice kEnableSettingsWindowChoices[] = { 540 const Experiment::Choice kEnableSettingsWindowChoices[] = {
454 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 541 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "", 0 },
455 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, 542 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
456 ::switches::kEnableSettingsWindow, "" }, 543 ::switches::kEnableSettingsWindow, "",
544 UMA_HISTOGRAM_ID_kEnableSettingsWindow },
457 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, 545 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
458 ::switches::kDisableSettingsWindow, "" }, 546 ::switches::kDisableSettingsWindow, "",
547 UMA_HISTOGRAM_ID_kDisableSettingsWindow },
459 }; 548 };
460 549
461 // RECORDING USER METRICS FOR FLAGS: 550 // RECORDING USER METRICS FOR FLAGS:
462 // ----------------------------------------------------------------------------- 551 // -----------------------------------------------------------------------------
463 // The first line of the experiment is the internal name. If you'd like to 552 // The first line of the experiment is the internal name. If you'd like to
464 // gather statistics about the usage of your flag, you should append a marker 553 // gather statistics about the usage of your flag, you should append a marker
465 // comment to the end of the feature name, like so: 554 // comment to the end of the feature name, like so:
466 // "my-special-feature", // FLAGS:RECORD_UMA 555 // "my-special-feature", // FLAGS:RECORD_UMA
467 // 556 //
468 // After doing that, run 557 // After doing that, run
(...skipping 24 matching lines...) Expand all
493 // array of choices. 582 // array of choices.
494 // See the documentation of Experiment for details on the fields. 583 // See the documentation of Experiment for details on the fields.
495 // 584 //
496 // When adding a new choice, add it to the end of the list. 585 // When adding a new choice, add it to the end of the list.
497 const Experiment kExperiments[] = { 586 const Experiment kExperiments[] = {
498 { 587 {
499 "ignore-gpu-blacklist", 588 "ignore-gpu-blacklist",
500 IDS_FLAGS_IGNORE_GPU_BLACKLIST_NAME, 589 IDS_FLAGS_IGNORE_GPU_BLACKLIST_NAME,
501 IDS_FLAGS_IGNORE_GPU_BLACKLIST_DESCRIPTION, 590 IDS_FLAGS_IGNORE_GPU_BLACKLIST_DESCRIPTION,
502 kOsAll, 591 kOsAll,
503 SINGLE_VALUE_TYPE(switches::kIgnoreGpuBlacklist) 592 SINGLE_VALUE_TYPE(switches::kIgnoreGpuBlacklist,
593 UMA_HISTOGRAM_ID_kIgnoreGpuBlacklist)
504 }, 594 },
505 { 595 {
506 "threaded-compositing-mode", 596 "threaded-compositing-mode",
507 IDS_FLAGS_THREADED_COMPOSITING_MODE_NAME, 597 IDS_FLAGS_THREADED_COMPOSITING_MODE_NAME,
508 IDS_FLAGS_THREADED_COMPOSITING_MODE_DESCRIPTION, 598 IDS_FLAGS_THREADED_COMPOSITING_MODE_DESCRIPTION,
509 #if !defined(USE_AURA) 599 #if !defined(USE_AURA)
510 kOsLinux, 600 kOsLinux,
511 #else 601 #else
512 0, 602 0,
513 #endif 603 #endif
514 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableThreadedCompositing, 604 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableThreadedCompositing,
515 switches::kDisableThreadedCompositing) 605 UMA_HISTOGRAM_ID_kEnableThreadedCompositing,
606 switches::kDisableThreadedCompositing,
607 UMA_HISTOGRAM_ID_kDisableThreadedCompositing)
516 }, 608 },
517 { 609 {
518 "force-accelerated-composited-scrolling", 610 "force-accelerated-composited-scrolling",
519 IDS_FLAGS_FORCE_ACCELERATED_OVERFLOW_SCROLL_MODE_NAME, 611 IDS_FLAGS_FORCE_ACCELERATED_OVERFLOW_SCROLL_MODE_NAME,
520 IDS_FLAGS_FORCE_ACCELERATED_OVERFLOW_SCROLL_MODE_DESCRIPTION, 612 IDS_FLAGS_FORCE_ACCELERATED_OVERFLOW_SCROLL_MODE_DESCRIPTION, kOsAll,
521 kOsAll, 613 ENABLE_DISABLE_VALUE_TYPE(
522 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableAcceleratedOverflowScroll, 614 switches::kEnableAcceleratedOverflowScroll,
523 switches::kDisableAcceleratedOverflowScroll) 615 UMA_HISTOGRAM_ID_kEnableAcceleratedOverflowScroll,
616 switches::kDisableAcceleratedOverflowScroll,
617 UMA_HISTOGRAM_ID_kDisableAcceleratedOverflowScroll)
524 }, 618 },
525 { 619 {
526 "disable_layer_squashing", 620 "disable_layer_squashing",
527 IDS_FLAGS_DISABLE_LAYER_SQUASHING_NAME, 621 IDS_FLAGS_DISABLE_LAYER_SQUASHING_NAME,
528 IDS_FLAGS_DISABLE_LAYER_SQUASHING_DESCRIPTION, 622 IDS_FLAGS_DISABLE_LAYER_SQUASHING_DESCRIPTION,
529 kOsAll, 623 kOsAll,
530 SINGLE_VALUE_TYPE(switches::kDisableLayerSquashing) 624 SINGLE_VALUE_TYPE(switches::kDisableLayerSquashing,
625 UMA_HISTOGRAM_ID_kDisableLayerSquashing)
531 }, 626 },
532 #if defined(OS_WIN) 627 #if defined(OS_WIN)
533 { 628 {
534 "disable-direct-write", 629 "disable-direct-write",
535 IDS_FLAGS_DISABLE_DIRECT_WRITE_NAME, 630 IDS_FLAGS_DISABLE_DIRECT_WRITE_NAME,
536 IDS_FLAGS_DISABLE_DIRECT_WRITE_DESCRIPTION, 631 IDS_FLAGS_DISABLE_DIRECT_WRITE_DESCRIPTION,
537 kOsWin, 632 kOsWin,
538 SINGLE_VALUE_TYPE(switches::kDisableDirectWrite) 633 SINGLE_VALUE_TYPE(switches::kDisableDirectWrite,
634 UMA_HISTOGRAM_ID_kDisableDirectWrite)
539 }, 635 },
540 #endif 636 #endif
541 { 637 {
542 "enable-experimental-canvas-features", 638 "enable-experimental-canvas-features",
543 IDS_FLAGS_ENABLE_EXPERIMENTAL_CANVAS_FEATURES_NAME, 639 IDS_FLAGS_ENABLE_EXPERIMENTAL_CANVAS_FEATURES_NAME,
544 IDS_FLAGS_ENABLE_EXPERIMENTAL_CANVAS_FEATURES_DESCRIPTION, 640 IDS_FLAGS_ENABLE_EXPERIMENTAL_CANVAS_FEATURES_DESCRIPTION,
545 kOsAll, 641 kOsAll,
546 SINGLE_VALUE_TYPE(switches::kEnableExperimentalCanvasFeatures) 642 SINGLE_VALUE_TYPE(switches::kEnableExperimentalCanvasFeatures,
643 UMA_HISTOGRAM_ID_kEnableExperimentalCanvasFeatures)
547 }, 644 },
548 { 645 {
549 "disable-accelerated-2d-canvas", 646 "disable-accelerated-2d-canvas",
550 IDS_FLAGS_DISABLE_ACCELERATED_2D_CANVAS_NAME, 647 IDS_FLAGS_DISABLE_ACCELERATED_2D_CANVAS_NAME,
551 IDS_FLAGS_DISABLE_ACCELERATED_2D_CANVAS_DESCRIPTION, 648 IDS_FLAGS_DISABLE_ACCELERATED_2D_CANVAS_DESCRIPTION,
552 kOsAll, 649 kOsAll,
553 SINGLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas) 650 SINGLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas,
651 UMA_HISTOGRAM_ID_kDisableAccelerated2dCanvas)
554 }, 652 },
555 { 653 {
556 "composited-layer-borders", 654 "composited-layer-borders",
557 IDS_FLAGS_COMPOSITED_LAYER_BORDERS, 655 IDS_FLAGS_COMPOSITED_LAYER_BORDERS,
558 IDS_FLAGS_COMPOSITED_LAYER_BORDERS_DESCRIPTION, 656 IDS_FLAGS_COMPOSITED_LAYER_BORDERS_DESCRIPTION,
559 kOsAll, 657 kOsAll,
560 SINGLE_VALUE_TYPE(cc::switches::kShowCompositedLayerBorders) 658 SINGLE_VALUE_TYPE(cc::switches::kShowCompositedLayerBorders,
659 UMA_HISTOGRAM_ID_kShowCompositedLayerBorders)
561 }, 660 },
562 { 661 {
563 "show-fps-counter", 662 "show-fps-counter",
564 IDS_FLAGS_SHOW_FPS_COUNTER, 663 IDS_FLAGS_SHOW_FPS_COUNTER,
565 IDS_FLAGS_SHOW_FPS_COUNTER_DESCRIPTION, 664 IDS_FLAGS_SHOW_FPS_COUNTER_DESCRIPTION,
566 kOsAll, 665 kOsAll,
567 SINGLE_VALUE_TYPE(cc::switches::kShowFPSCounter) 666 SINGLE_VALUE_TYPE(cc::switches::kShowFPSCounter,
667 UMA_HISTOGRAM_ID_kShowFPSCounter)
568 }, 668 },
569 { 669 {
570 "disable-webgl", 670 "disable-webgl",
571 IDS_FLAGS_DISABLE_WEBGL_NAME, 671 IDS_FLAGS_DISABLE_WEBGL_NAME,
572 IDS_FLAGS_DISABLE_WEBGL_DESCRIPTION, 672 IDS_FLAGS_DISABLE_WEBGL_DESCRIPTION,
573 kOsAll, 673 kOsAll,
574 SINGLE_VALUE_TYPE(switches::kDisableExperimentalWebGL) 674 SINGLE_VALUE_TYPE(switches::kDisableExperimentalWebGL,
675 UMA_HISTOGRAM_ID_kDisableExperimentalWebGL)
575 }, 676 },
576 { 677 {
577 "disable-webrtc", 678 "disable-webrtc",
578 IDS_FLAGS_DISABLE_WEBRTC_NAME, 679 IDS_FLAGS_DISABLE_WEBRTC_NAME,
579 IDS_FLAGS_DISABLE_WEBRTC_DESCRIPTION, 680 IDS_FLAGS_DISABLE_WEBRTC_DESCRIPTION,
580 kOsAndroid, 681 kOsAndroid,
581 #if defined(OS_ANDROID) 682 #if defined(OS_ANDROID)
582 SINGLE_VALUE_TYPE(switches::kDisableWebRTC) 683 SINGLE_VALUE_TYPE(switches::kDisableWebRTC,
684 UMA_HISTOGRAM_ID_kDisableWebRTC)
583 #else 685 #else
584 SINGLE_VALUE_TYPE("") 686 SINGLE_VALUE_TYPE("", 0)
585 #endif 687 #endif
586 }, 688 },
587 #if defined(ENABLE_WEBRTC) 689 #if defined(ENABLE_WEBRTC)
588 { 690 {
589 "disable-device-enumeration", 691 "disable-device-enumeration",
590 IDS_FLAGS_DISABLE_DEVICE_ENUMERATION_NAME, 692 IDS_FLAGS_DISABLE_DEVICE_ENUMERATION_NAME,
591 IDS_FLAGS_DISABLE_DEVICE_ENUMERATION_DESCRIPTION, 693 IDS_FLAGS_DISABLE_DEVICE_ENUMERATION_DESCRIPTION,
592 kOsAll, 694 kOsAll,
593 SINGLE_VALUE_TYPE(switches::kDisableDeviceEnumeration) 695 SINGLE_VALUE_TYPE(switches::kDisableDeviceEnumeration,
696 UMA_HISTOGRAM_ID_kDisableDeviceEnumeration)
594 }, 697 },
595 { 698 {
596 "disable-webrtc-hw-decoding", 699 "disable-webrtc-hw-decoding",
597 IDS_FLAGS_DISABLE_WEBRTC_HW_DECODING_NAME, 700 IDS_FLAGS_DISABLE_WEBRTC_HW_DECODING_NAME,
598 IDS_FLAGS_DISABLE_WEBRTC_HW_DECODING_DESCRIPTION, 701 IDS_FLAGS_DISABLE_WEBRTC_HW_DECODING_DESCRIPTION,
599 kOsAndroid | kOsCrOS, 702 kOsAndroid | kOsCrOS,
600 SINGLE_VALUE_TYPE(switches::kDisableWebRtcHWDecoding) 703 SINGLE_VALUE_TYPE(switches::kDisableWebRtcHWDecoding,
704 UMA_HISTOGRAM_ID_kDisableWebRtcHWDecoding)
601 }, 705 },
602 { 706 {
603 "disable-webrtc-hw-encoding", 707 "disable-webrtc-hw-encoding",
604 IDS_FLAGS_DISABLE_WEBRTC_HW_ENCODING_NAME, 708 IDS_FLAGS_DISABLE_WEBRTC_HW_ENCODING_NAME,
605 IDS_FLAGS_DISABLE_WEBRTC_HW_ENCODING_DESCRIPTION, 709 IDS_FLAGS_DISABLE_WEBRTC_HW_ENCODING_DESCRIPTION,
606 kOsAndroid | kOsCrOS, 710 kOsAndroid | kOsCrOS,
607 SINGLE_VALUE_TYPE(switches::kDisableWebRtcHWEncoding) 711 SINGLE_VALUE_TYPE(switches::kDisableWebRtcHWEncoding,
712 UMA_HISTOGRAM_ID_kDisableWebRtcHWEncoding)
608 }, 713 },
609 #endif 714 #endif
610 #if defined(OS_ANDROID) 715 #if defined(OS_ANDROID)
611 { 716 {
612 "disable-webaudio", 717 "disable-webaudio",
613 IDS_FLAGS_DISABLE_WEBAUDIO_NAME, 718 IDS_FLAGS_DISABLE_WEBAUDIO_NAME,
614 IDS_FLAGS_DISABLE_WEBAUDIO_DESCRIPTION, 719 IDS_FLAGS_DISABLE_WEBAUDIO_DESCRIPTION,
615 kOsAndroid, 720 kOsAndroid,
616 SINGLE_VALUE_TYPE(switches::kDisableWebAudio) 721 SINGLE_VALUE_TYPE(switches::kDisableWebAudio,
722 UMA_HISTOGRAM_ID_kDisableWebAudio)
617 }, 723 },
618 #endif 724 #endif
619 { 725 {
620 "enable-compositing-for-fixed-position", 726 "enable-compositing-for-fixed-position",
621 IDS_FLAGS_COMPOSITING_FOR_FIXED_POSITION_NAME, 727 IDS_FLAGS_COMPOSITING_FOR_FIXED_POSITION_NAME,
622 IDS_FLAGS_COMPOSITING_FOR_FIXED_POSITION_DESCRIPTION, 728 IDS_FLAGS_COMPOSITING_FOR_FIXED_POSITION_DESCRIPTION,
623 kOsAll, 729 kOsAll,
624 MULTI_VALUE_TYPE(kEnableCompositingForFixedPositionChoices) 730 MULTI_VALUE_TYPE(kEnableCompositingForFixedPositionChoices)
625 }, 731 },
626 { 732 {
(...skipping 10 matching lines...) Expand all
637 kOsAll, 743 kOsAll,
638 MULTI_VALUE_TYPE(kEnableAcceleratedFixedRootBackgroundChoices) 744 MULTI_VALUE_TYPE(kEnableAcceleratedFixedRootBackgroundChoices)
639 }, 745 },
640 // Native client is compiled out when DISABLE_NACL is defined. 746 // Native client is compiled out when DISABLE_NACL is defined.
641 #if !defined(DISABLE_NACL) 747 #if !defined(DISABLE_NACL)
642 { 748 {
643 "enable-nacl", // FLAGS:RECORD_UMA 749 "enable-nacl", // FLAGS:RECORD_UMA
644 IDS_FLAGS_ENABLE_NACL_NAME, 750 IDS_FLAGS_ENABLE_NACL_NAME,
645 IDS_FLAGS_ENABLE_NACL_DESCRIPTION, 751 IDS_FLAGS_ENABLE_NACL_DESCRIPTION,
646 kOsAll, 752 kOsAll,
647 SINGLE_VALUE_TYPE(switches::kEnableNaCl) 753 SINGLE_VALUE_TYPE(switches::kEnableNaCl, UMA_HISTOGRAM_ID_kEnableNaCl)
648 }, 754 },
649 { 755 {
650 "enable-nacl-debug", // FLAGS:RECORD_UMA 756 "enable-nacl-debug", // FLAGS:RECORD_UMA
651 IDS_FLAGS_ENABLE_NACL_DEBUG_NAME, 757 IDS_FLAGS_ENABLE_NACL_DEBUG_NAME,
652 IDS_FLAGS_ENABLE_NACL_DEBUG_DESCRIPTION, 758 IDS_FLAGS_ENABLE_NACL_DEBUG_DESCRIPTION,
653 kOsDesktop, 759 kOsDesktop,
654 SINGLE_VALUE_TYPE(switches::kEnableNaClDebug) 760 SINGLE_VALUE_TYPE(switches::kEnableNaClDebug,
761 UMA_HISTOGRAM_ID_kEnableNaClDebug)
655 }, 762 },
656 { 763 {
657 "disable-pnacl", // FLAGS:RECORD_UMA 764 "disable-pnacl", // FLAGS:RECORD_UMA
658 IDS_FLAGS_DISABLE_PNACL_NAME, 765 IDS_FLAGS_DISABLE_PNACL_NAME,
659 IDS_FLAGS_DISABLE_PNACL_DESCRIPTION, 766 IDS_FLAGS_DISABLE_PNACL_DESCRIPTION,
660 kOsDesktop, 767 kOsDesktop,
661 SINGLE_VALUE_TYPE(switches::kDisablePnacl) 768 SINGLE_VALUE_TYPE(switches::kDisablePnacl,
769 UMA_HISTOGRAM_ID_kDisablePnacl)
662 }, 770 },
663 { 771 {
664 "nacl-debug-mask", // FLAGS:RECORD_UMA 772 "nacl-debug-mask", // FLAGS:RECORD_UMA
665 IDS_FLAGS_NACL_DEBUG_MASK_NAME, 773 IDS_FLAGS_NACL_DEBUG_MASK_NAME,
666 IDS_FLAGS_NACL_DEBUG_MASK_DESCRIPTION, 774 IDS_FLAGS_NACL_DEBUG_MASK_DESCRIPTION,
667 kOsDesktop, 775 kOsDesktop,
668 MULTI_VALUE_TYPE(kNaClDebugMaskChoices) 776 MULTI_VALUE_TYPE(kNaClDebugMaskChoices)
669 }, 777 },
670 #endif 778 #endif
671 { 779 {
672 "extension-apis", // FLAGS:RECORD_UMA 780 "extension-apis", // FLAGS:RECORD_UMA
673 IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_NAME, 781 IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_NAME,
674 IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_DESCRIPTION, 782 IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_DESCRIPTION,
675 kOsDesktop, 783 kOsDesktop,
676 SINGLE_VALUE_TYPE(extensions::switches::kEnableExperimentalExtensionApis) 784 SINGLE_VALUE_TYPE(extensions::switches::kEnableExperimentalExtensionApis,
785 UMA_HISTOGRAM_ID_kEnableExperimentalExtensionApis)
677 }, 786 },
678 { 787 {
679 "extensions-on-chrome-urls", 788 "extensions-on-chrome-urls",
680 IDS_FLAGS_EXTENSIONS_ON_CHROME_URLS_NAME, 789 IDS_FLAGS_EXTENSIONS_ON_CHROME_URLS_NAME,
681 IDS_FLAGS_EXTENSIONS_ON_CHROME_URLS_DESCRIPTION, 790 IDS_FLAGS_EXTENSIONS_ON_CHROME_URLS_DESCRIPTION,
682 kOsAll, 791 kOsAll,
683 SINGLE_VALUE_TYPE(extensions::switches::kExtensionsOnChromeURLs) 792 SINGLE_VALUE_TYPE(extensions::switches::kExtensionsOnChromeURLs,
793 UMA_HISTOGRAM_ID_kExtensionsOnChromeURLs)
684 }, 794 },
685 { 795 {
686 "enable-fast-unload", 796 "enable-fast-unload",
687 IDS_FLAGS_ENABLE_FAST_UNLOAD_NAME, 797 IDS_FLAGS_ENABLE_FAST_UNLOAD_NAME,
688 IDS_FLAGS_ENABLE_FAST_UNLOAD_DESCRIPTION, 798 IDS_FLAGS_ENABLE_FAST_UNLOAD_DESCRIPTION,
689 kOsAll, 799 kOsAll,
690 SINGLE_VALUE_TYPE(switches::kEnableFastUnload) 800 SINGLE_VALUE_TYPE(switches::kEnableFastUnload,
801 UMA_HISTOGRAM_ID_kEnableFastUnload)
691 }, 802 },
692 { 803 {
693 "enable-app-window-controls", 804 "enable-app-window-controls",
694 IDS_FLAGS_ENABLE_APP_WINDOW_CONTROLS_NAME, 805 IDS_FLAGS_ENABLE_APP_WINDOW_CONTROLS_NAME,
695 IDS_FLAGS_ENABLE_APP_WINDOW_CONTROLS_DESCRIPTION, 806 IDS_FLAGS_ENABLE_APP_WINDOW_CONTROLS_DESCRIPTION,
696 kOsDesktop, 807 kOsDesktop,
697 SINGLE_VALUE_TYPE(switches::kEnableAppWindowControls) 808 SINGLE_VALUE_TYPE(switches::kEnableAppWindowControls,
809 UMA_HISTOGRAM_ID_kEnableAppWindowControls)
698 }, 810 },
699 { 811 {
700 "disable-hyperlink-auditing", 812 "disable-hyperlink-auditing",
701 IDS_FLAGS_DISABLE_HYPERLINK_AUDITING_NAME, 813 IDS_FLAGS_DISABLE_HYPERLINK_AUDITING_NAME,
702 IDS_FLAGS_DISABLE_HYPERLINK_AUDITING_DESCRIPTION, 814 IDS_FLAGS_DISABLE_HYPERLINK_AUDITING_DESCRIPTION,
703 kOsAll, 815 kOsAll,
704 SINGLE_VALUE_TYPE(switches::kNoPings) 816 SINGLE_VALUE_TYPE(switches::kNoPings, UMA_HISTOGRAM_ID_kNoPings)
705 }, 817 },
706 #if defined(OS_ANDROID) 818 #if defined(OS_ANDROID)
707 { 819 {
708 "enable-new-ntp", 820 "enable-new-ntp",
709 IDS_FLAGS_ENABLE_NEW_NTP, 821 IDS_FLAGS_ENABLE_NEW_NTP,
710 IDS_FLAGS_ENABLE_NEW_NTP_DESCRIPTION, 822 IDS_FLAGS_ENABLE_NEW_NTP_DESCRIPTION,
711 kOsAndroid, 823 kOsAndroid,
712 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableNewNTP, 824 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableNewNTP,
713 switches::kDisableNewNTP) 825 UMA_HISTOGRAM_ID_kEnableNewNTP,
826 switches::kDisableNewNTP,
827 UMA_HISTOGRAM_ID_kDisableNewNTP)
714 }, 828 },
715 { 829 {
716 "contextual-search", 830 "contextual-search",
717 IDS_FLAGS_ENABLE_CONTEXTUAL_SEARCH, 831 IDS_FLAGS_ENABLE_CONTEXTUAL_SEARCH,
718 IDS_FLAGS_ENABLE_CONTEXTUAL_SEARCH_DESCRIPTION, 832 IDS_FLAGS_ENABLE_CONTEXTUAL_SEARCH_DESCRIPTION,
719 kOsAndroid, 833 kOsAndroid,
720 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableContextualSearch, 834 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableContextualSearch,
721 switches::kDisableContextualSearch) 835 UMA_HISTOGRAM_ID_kEnableContextualSearch,
836 switches::kDisableContextualSearch,
837 UMA_HISTOGRAM_ID_kDisableContextualSearch)
722 }, 838 },
723 #endif 839 #endif
724 { 840 {
725 "show-autofill-type-predictions", 841 "show-autofill-type-predictions",
726 IDS_FLAGS_SHOW_AUTOFILL_TYPE_PREDICTIONS_NAME, 842 IDS_FLAGS_SHOW_AUTOFILL_TYPE_PREDICTIONS_NAME,
727 IDS_FLAGS_SHOW_AUTOFILL_TYPE_PREDICTIONS_DESCRIPTION, 843 IDS_FLAGS_SHOW_AUTOFILL_TYPE_PREDICTIONS_DESCRIPTION,
728 kOsAll, 844 kOsAll,
729 SINGLE_VALUE_TYPE(autofill::switches::kShowAutofillTypePredictions) 845 SINGLE_VALUE_TYPE(autofill::switches::kShowAutofillTypePredictions,
846 UMA_HISTOGRAM_ID_kShowAutofillTypePredictions)
730 }, 847 },
731 { 848 {
732 "enable-gesture-tap-highlight", 849 "enable-gesture-tap-highlight",
733 IDS_FLAGS_ENABLE_GESTURE_TAP_HIGHLIGHTING_NAME, 850 IDS_FLAGS_ENABLE_GESTURE_TAP_HIGHLIGHTING_NAME,
734 IDS_FLAGS_ENABLE_GESTURE_TAP_HIGHLIGHTING_DESCRIPTION, 851 IDS_FLAGS_ENABLE_GESTURE_TAP_HIGHLIGHTING_DESCRIPTION,
735 kOsLinux | kOsCrOS | kOsWin | kOsAndroid, 852 kOsLinux | kOsCrOS | kOsWin | kOsAndroid,
736 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableGestureTapHighlight, 853 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableGestureTapHighlight,
737 switches::kDisableGestureTapHighlight) 854 UMA_HISTOGRAM_ID_kEnableGestureTapHighlight,
855 switches::kDisableGestureTapHighlight,
856 UMA_HISTOGRAM_ID_kDisableGestureTapHighlight)
738 }, 857 },
739 { 858 {
740 "enable-smooth-scrolling", // FLAGS:RECORD_UMA 859 "enable-smooth-scrolling", // FLAGS:RECORD_UMA
741 IDS_FLAGS_ENABLE_SMOOTH_SCROLLING_NAME, 860 IDS_FLAGS_ENABLE_SMOOTH_SCROLLING_NAME,
742 IDS_FLAGS_ENABLE_SMOOTH_SCROLLING_DESCRIPTION, 861 IDS_FLAGS_ENABLE_SMOOTH_SCROLLING_DESCRIPTION,
743 // Can't expose the switch unless the code is compiled in. 862 // Can't expose the switch unless the code is compiled in.
744 // On by default for the Mac (different implementation in WebKit). 863 // On by default for the Mac (different implementation in WebKit).
745 kOsLinux, 864 kOsLinux,
746 SINGLE_VALUE_TYPE(switches::kEnableSmoothScrolling) 865 SINGLE_VALUE_TYPE(switches::kEnableSmoothScrolling,
866 UMA_HISTOGRAM_ID_kEnableSmoothScrolling)
747 }, 867 },
748 #if defined(USE_AURA) || defined(OS_LINUX) 868 #if defined(USE_AURA) || defined(OS_LINUX)
749 { 869 {
750 "overlay-scrollbars", 870 "overlay-scrollbars",
751 IDS_FLAGS_ENABLE_OVERLAY_SCROLLBARS_NAME, 871 IDS_FLAGS_ENABLE_OVERLAY_SCROLLBARS_NAME,
752 IDS_FLAGS_ENABLE_OVERLAY_SCROLLBARS_DESCRIPTION, 872 IDS_FLAGS_ENABLE_OVERLAY_SCROLLBARS_DESCRIPTION,
753 // Uses the system preference on Mac (a different implementation). 873 // Uses the system preference on Mac (a different implementation).
754 // On Android, this is always enabled. 874 // On Android, this is always enabled.
755 kOsLinux | kOsCrOS | kOsWin, 875 kOsLinux | kOsCrOS | kOsWin,
756 MULTI_VALUE_TYPE(kOverlayScrollbarChoices) 876 MULTI_VALUE_TYPE(kOverlayScrollbarChoices)
757 }, 877 },
758 #endif 878 #endif
759 { 879 {
760 "enable-panels", 880 "enable-panels",
761 IDS_FLAGS_ENABLE_PANELS_NAME, 881 IDS_FLAGS_ENABLE_PANELS_NAME,
762 IDS_FLAGS_ENABLE_PANELS_DESCRIPTION, 882 IDS_FLAGS_ENABLE_PANELS_DESCRIPTION,
763 kOsDesktop, 883 kOsDesktop,
764 SINGLE_VALUE_TYPE(switches::kEnablePanels) 884 SINGLE_VALUE_TYPE(switches::kEnablePanels,
885 UMA_HISTOGRAM_ID_kEnablePanels)
765 }, 886 },
766 { 887 {
767 // See http://crbug.com/120416 for how to remove this flag. 888 // See http://crbug.com/120416 for how to remove this flag.
768 "save-page-as-mhtml", // FLAGS:RECORD_UMA 889 "save-page-as-mhtml", // FLAGS:RECORD_UMA
769 IDS_FLAGS_SAVE_PAGE_AS_MHTML_NAME, 890 IDS_FLAGS_SAVE_PAGE_AS_MHTML_NAME,
770 IDS_FLAGS_SAVE_PAGE_AS_MHTML_DESCRIPTION, 891 IDS_FLAGS_SAVE_PAGE_AS_MHTML_DESCRIPTION,
771 kOsMac | kOsWin | kOsLinux, 892 kOsMac | kOsWin | kOsLinux,
772 SINGLE_VALUE_TYPE(switches::kSavePageAsMHTML) 893 SINGLE_VALUE_TYPE(switches::kSavePageAsMHTML,
894 UMA_HISTOGRAM_ID_kSavePageAsMHTML)
773 }, 895 },
774 { 896 {
775 "enable-quic", 897 "enable-quic",
776 IDS_FLAGS_ENABLE_QUIC_NAME, 898 IDS_FLAGS_ENABLE_QUIC_NAME,
777 IDS_FLAGS_ENABLE_QUIC_DESCRIPTION, 899 IDS_FLAGS_ENABLE_QUIC_DESCRIPTION,
778 kOsAll, 900 kOsAll,
779 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableQuic, 901 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableQuic,
780 switches::kDisableQuic) 902 UMA_HISTOGRAM_ID_kEnableQuic,
903 switches::kDisableQuic,
904 UMA_HISTOGRAM_ID_kDisableQuic)
781 }, 905 },
782 { 906 {
783 "enable-quic-https", 907 "enable-quic-https",
784 IDS_FLAGS_ENABLE_QUIC_HTTPS_NAME, 908 IDS_FLAGS_ENABLE_QUIC_HTTPS_NAME,
785 IDS_FLAGS_ENABLE_QUIC_HTTPS_DESCRIPTION, 909 IDS_FLAGS_ENABLE_QUIC_HTTPS_DESCRIPTION,
786 kOsAll, 910 kOsAll,
787 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableQuicHttps, 911 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableQuicHttps,
788 switches::kDisableQuicHttps) 912 UMA_HISTOGRAM_ID_kEnableQuicHttps,
913 switches::kDisableQuicHttps,
914 UMA_HISTOGRAM_ID_kDisableQuicHttps)
789 }, 915 },
790 { 916 {
791 "enable-spdy4", 917 "enable-spdy4",
792 IDS_FLAGS_ENABLE_SPDY4_NAME, 918 IDS_FLAGS_ENABLE_SPDY4_NAME,
793 IDS_FLAGS_ENABLE_SPDY4_DESCRIPTION, 919 IDS_FLAGS_ENABLE_SPDY4_DESCRIPTION,
794 kOsAll, 920 kOsAll,
795 SINGLE_VALUE_TYPE(switches::kEnableSpdy4) 921 SINGLE_VALUE_TYPE(switches::kEnableSpdy4, UMA_HISTOGRAM_ID_kEnableSpdy4)
796 }, 922 },
797 { 923 {
798 "enable-async-dns", 924 "enable-async-dns",
799 IDS_FLAGS_ENABLE_ASYNC_DNS_NAME, 925 IDS_FLAGS_ENABLE_ASYNC_DNS_NAME,
800 IDS_FLAGS_ENABLE_ASYNC_DNS_DESCRIPTION, 926 IDS_FLAGS_ENABLE_ASYNC_DNS_DESCRIPTION,
801 kOsWin | kOsMac | kOsLinux | kOsCrOS, 927 kOsWin | kOsMac | kOsLinux | kOsCrOS,
802 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableAsyncDns, 928 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableAsyncDns,
803 switches::kDisableAsyncDns) 929 UMA_HISTOGRAM_ID_kEnableAsyncDns,
930 switches::kDisableAsyncDns,
931 UMA_HISTOGRAM_ID_kDisableAsyncDns)
804 }, 932 },
805 { 933 {
806 "disable-media-source", 934 "disable-media-source",
807 IDS_FLAGS_DISABLE_MEDIA_SOURCE_NAME, 935 IDS_FLAGS_DISABLE_MEDIA_SOURCE_NAME,
808 IDS_FLAGS_DISABLE_MEDIA_SOURCE_DESCRIPTION, 936 IDS_FLAGS_DISABLE_MEDIA_SOURCE_DESCRIPTION,
809 kOsAll, 937 kOsAll,
810 SINGLE_VALUE_TYPE(switches::kDisableMediaSource) 938 SINGLE_VALUE_TYPE(switches::kDisableMediaSource,
939 UMA_HISTOGRAM_ID_kDisableMediaSource)
811 }, 940 },
812 { 941 {
813 "enable-encrypted-media", 942 "enable-encrypted-media",
814 IDS_FLAGS_ENABLE_ENCRYPTED_MEDIA_NAME, 943 IDS_FLAGS_ENABLE_ENCRYPTED_MEDIA_NAME,
815 IDS_FLAGS_ENABLE_ENCRYPTED_MEDIA_DESCRIPTION, 944 IDS_FLAGS_ENABLE_ENCRYPTED_MEDIA_DESCRIPTION,
816 kOsAll, 945 kOsAll,
817 SINGLE_VALUE_TYPE(switches::kEnableEncryptedMedia) 946 SINGLE_VALUE_TYPE(switches::kEnableEncryptedMedia,
947 UMA_HISTOGRAM_ID_kEnableEncryptedMedia)
818 }, 948 },
819 { 949 {
820 "disable-prefixed-encrypted-media", 950 "disable-prefixed-encrypted-media",
821 IDS_FLAGS_DISABLE_PREFIXED_ENCRYPTED_MEDIA_NAME, 951 IDS_FLAGS_DISABLE_PREFIXED_ENCRYPTED_MEDIA_NAME,
822 IDS_FLAGS_DISABLE_PREFIXED_ENCRYPTED_MEDIA_DESCRIPTION, 952 IDS_FLAGS_DISABLE_PREFIXED_ENCRYPTED_MEDIA_DESCRIPTION,
823 kOsAll, 953 kOsAll,
824 SINGLE_VALUE_TYPE(switches::kDisablePrefixedEncryptedMedia) 954 SINGLE_VALUE_TYPE(switches::kDisablePrefixedEncryptedMedia,
955 UMA_HISTOGRAM_ID_kDisablePrefixedEncryptedMedia)
825 }, 956 },
826 #if defined(OS_ANDROID) 957 #if defined(OS_ANDROID)
827 { 958 {
828 "disable-infobar-for-protected-media-identifier", 959 "disable-infobar-for-protected-media-identifier",
829 IDS_FLAGS_DISABLE_INFOBAR_FOR_PROTECTED_MEDIA_IDENTIFIER_NAME, 960 IDS_FLAGS_DISABLE_INFOBAR_FOR_PROTECTED_MEDIA_IDENTIFIER_NAME,
830 IDS_FLAGS_DISABLE_INFOBAR_FOR_PROTECTED_MEDIA_IDENTIFIER_DESCRIPTION, 961 IDS_FLAGS_DISABLE_INFOBAR_FOR_PROTECTED_MEDIA_IDENTIFIER_DESCRIPTION,
831 kOsAndroid, 962 kOsAndroid,
832 SINGLE_VALUE_TYPE(switches::kDisableInfobarForProtectedMediaIdentifier) 963 SINGLE_VALUE_TYPE(
964 switches::kDisableInfobarForProtectedMediaIdentifier,
965 UMA_HISTOGRAM_ID_kDisableInfobarForProtectedMediaIdentifier)
833 }, 966 },
834 { 967 {
835 "mediadrm-enable-non-compositing", 968 "mediadrm-enable-non-compositing",
836 IDS_FLAGS_MEDIADRM_ENABLE_NON_COMPOSITING_NAME, 969 IDS_FLAGS_MEDIADRM_ENABLE_NON_COMPOSITING_NAME,
837 IDS_FLAGS_MEDIADRM_ENABLE_NON_COMPOSITING_DESCRIPTION, 970 IDS_FLAGS_MEDIADRM_ENABLE_NON_COMPOSITING_DESCRIPTION,
838 kOsAndroid, 971 kOsAndroid,
839 SINGLE_VALUE_TYPE(switches::kMediaDrmEnableNonCompositing) 972 SINGLE_VALUE_TYPE(switches::kMediaDrmEnableNonCompositing,
973 UMA_HISTOGRAM_ID_kMediaDrmEnableNonCompositing)
840 }, 974 },
841 #endif // defined(OS_ANDROID) 975 #endif // defined(OS_ANDROID)
842 { 976 {
843 "enable-javascript-harmony", 977 "enable-javascript-harmony",
844 IDS_FLAGS_ENABLE_JAVASCRIPT_HARMONY_NAME, 978 IDS_FLAGS_ENABLE_JAVASCRIPT_HARMONY_NAME,
845 IDS_FLAGS_ENABLE_JAVASCRIPT_HARMONY_DESCRIPTION, 979 IDS_FLAGS_ENABLE_JAVASCRIPT_HARMONY_DESCRIPTION,
846 kOsAll, 980 kOsAll,
847 SINGLE_VALUE_TYPE_AND_VALUE(switches::kJavaScriptFlags, "--harmony") 981 SINGLE_VALUE_TYPE_AND_VALUE(switches::kJavaScriptFlags,
982 "--harmony",
983 UMA_HISTOGRAM_ID_kJavaScriptFlags)
848 }, 984 },
849 { 985 {
850 "disable-software-rasterizer", 986 "disable-software-rasterizer",
851 IDS_FLAGS_DISABLE_SOFTWARE_RASTERIZER_NAME, 987 IDS_FLAGS_DISABLE_SOFTWARE_RASTERIZER_NAME,
852 IDS_FLAGS_DISABLE_SOFTWARE_RASTERIZER_DESCRIPTION, 988 IDS_FLAGS_DISABLE_SOFTWARE_RASTERIZER_DESCRIPTION,
853 #if defined(ENABLE_SWIFTSHADER) 989 #if defined(ENABLE_SWIFTSHADER)
854 kOsAll, 990 kOsAll,
855 #else 991 #else
856 0, 992 0,
857 #endif 993 #endif
858 SINGLE_VALUE_TYPE(switches::kDisableSoftwareRasterizer) 994 SINGLE_VALUE_TYPE(switches::kDisableSoftwareRasterizer,
995 UMA_HISTOGRAM_ID_kDisableSoftwareRasterizer)
859 }, 996 },
860 { 997 {
861 "enable-gpu-rasterization", 998 "enable-gpu-rasterization",
862 IDS_FLAGS_ENABLE_GPU_RASTERIZATION_NAME, 999 IDS_FLAGS_ENABLE_GPU_RASTERIZATION_NAME,
863 IDS_FLAGS_ENABLE_GPU_RASTERIZATION_DESCRIPTION, 1000 IDS_FLAGS_ENABLE_GPU_RASTERIZATION_DESCRIPTION,
864 kOsAndroid, 1001 kOsAndroid,
865 MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices) 1002 MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)
866 }, 1003 },
867 { 1004 {
868 "enable-experimental-web-platform-features", 1005 "enable-experimental-web-platform-features",
869 IDS_FLAGS_EXPERIMENTAL_WEB_PLATFORM_FEATURES_NAME, 1006 IDS_FLAGS_EXPERIMENTAL_WEB_PLATFORM_FEATURES_NAME,
870 IDS_FLAGS_EXPERIMENTAL_WEB_PLATFORM_FEATURES_DESCRIPTION, 1007 IDS_FLAGS_EXPERIMENTAL_WEB_PLATFORM_FEATURES_DESCRIPTION,
871 kOsAll, 1008 kOsAll,
872 SINGLE_VALUE_TYPE(switches::kEnableExperimentalWebPlatformFeatures) 1009 SINGLE_VALUE_TYPE(
1010 switches::kEnableExperimentalWebPlatformFeatures,
1011 UMA_HISTOGRAM_ID_kEnableExperimentalWebPlatformFeatures)
873 }, 1012 },
874 { 1013 {
875 "disable-ntp-other-sessions-menu", 1014 "disable-ntp-other-sessions-menu",
876 IDS_FLAGS_NTP_OTHER_SESSIONS_MENU_NAME, 1015 IDS_FLAGS_NTP_OTHER_SESSIONS_MENU_NAME,
877 IDS_FLAGS_NTP_OTHER_SESSIONS_MENU_DESCRIPTION, 1016 IDS_FLAGS_NTP_OTHER_SESSIONS_MENU_DESCRIPTION,
878 kOsDesktop, 1017 kOsDesktop,
879 SINGLE_VALUE_TYPE(switches::kDisableNTPOtherSessionsMenu) 1018 SINGLE_VALUE_TYPE(switches::kDisableNTPOtherSessionsMenu,
1019 UMA_HISTOGRAM_ID_kDisableNTPOtherSessionsMenu)
880 }, 1020 },
881 { 1021 {
882 "enable-devtools-experiments", 1022 "enable-devtools-experiments",
883 IDS_FLAGS_ENABLE_DEVTOOLS_EXPERIMENTS_NAME, 1023 IDS_FLAGS_ENABLE_DEVTOOLS_EXPERIMENTS_NAME,
884 IDS_FLAGS_ENABLE_DEVTOOLS_EXPERIMENTS_DESCRIPTION, 1024 IDS_FLAGS_ENABLE_DEVTOOLS_EXPERIMENTS_DESCRIPTION,
885 kOsDesktop, 1025 kOsDesktop,
886 SINGLE_VALUE_TYPE(switches::kEnableDevToolsExperiments) 1026 SINGLE_VALUE_TYPE(switches::kEnableDevToolsExperiments,
1027 UMA_HISTOGRAM_ID_kEnableDevToolsExperiments)
887 }, 1028 },
888 { 1029 {
889 "silent-debugger-extension-api", 1030 "silent-debugger-extension-api",
890 IDS_FLAGS_SILENT_DEBUGGER_EXTENSION_API_NAME, 1031 IDS_FLAGS_SILENT_DEBUGGER_EXTENSION_API_NAME,
891 IDS_FLAGS_SILENT_DEBUGGER_EXTENSION_API_DESCRIPTION, 1032 IDS_FLAGS_SILENT_DEBUGGER_EXTENSION_API_DESCRIPTION,
892 kOsDesktop, 1033 kOsDesktop,
893 SINGLE_VALUE_TYPE(switches::kSilentDebuggerExtensionAPI) 1034 SINGLE_VALUE_TYPE(switches::kSilentDebuggerExtensionAPI,
1035 UMA_HISTOGRAM_ID_kSilentDebuggerExtensionAPI)
894 }, 1036 },
895 { 1037 {
896 "spellcheck-autocorrect", 1038 "spellcheck-autocorrect",
897 IDS_FLAGS_SPELLCHECK_AUTOCORRECT, 1039 IDS_FLAGS_SPELLCHECK_AUTOCORRECT,
898 IDS_FLAGS_SPELLCHECK_AUTOCORRECT_DESCRIPTION, 1040 IDS_FLAGS_SPELLCHECK_AUTOCORRECT_DESCRIPTION,
899 kOsWin | kOsLinux | kOsCrOS, 1041 kOsWin | kOsLinux | kOsCrOS,
900 SINGLE_VALUE_TYPE(switches::kEnableSpellingAutoCorrect) 1042 SINGLE_VALUE_TYPE(switches::kEnableSpellingAutoCorrect,
1043 UMA_HISTOGRAM_ID_kEnableSpellingAutoCorrect)
901 }, 1044 },
902 { 1045 {
903 "enable-scroll-prediction", 1046 "enable-scroll-prediction",
904 IDS_FLAGS_ENABLE_SCROLL_PREDICTION_NAME, 1047 IDS_FLAGS_ENABLE_SCROLL_PREDICTION_NAME,
905 IDS_FLAGS_ENABLE_SCROLL_PREDICTION_DESCRIPTION, 1048 IDS_FLAGS_ENABLE_SCROLL_PREDICTION_DESCRIPTION,
906 kOsDesktop, 1049 kOsDesktop,
907 SINGLE_VALUE_TYPE(switches::kEnableScrollPrediction) 1050 SINGLE_VALUE_TYPE(switches::kEnableScrollPrediction,
1051 UMA_HISTOGRAM_ID_kEnableScrollPrediction)
908 }, 1052 },
909 { 1053 {
910 "touch-events", 1054 "touch-events",
911 IDS_TOUCH_EVENTS_NAME, 1055 IDS_TOUCH_EVENTS_NAME,
912 IDS_TOUCH_EVENTS_DESCRIPTION, 1056 IDS_TOUCH_EVENTS_DESCRIPTION,
913 kOsDesktop, 1057 kOsDesktop, MULTI_VALUE_TYPE(kTouchEventsChoices)
914 MULTI_VALUE_TYPE(kTouchEventsChoices)
915 }, 1058 },
916 { 1059 {
917 "disable-touch-adjustment", 1060 "disable-touch-adjustment",
918 IDS_DISABLE_TOUCH_ADJUSTMENT_NAME, 1061 IDS_DISABLE_TOUCH_ADJUSTMENT_NAME,
919 IDS_DISABLE_TOUCH_ADJUSTMENT_DESCRIPTION, 1062 IDS_DISABLE_TOUCH_ADJUSTMENT_DESCRIPTION,
920 kOsWin | kOsLinux | kOsCrOS, 1063 kOsWin | kOsLinux | kOsCrOS,
921 SINGLE_VALUE_TYPE(switches::kDisableTouchAdjustment) 1064 SINGLE_VALUE_TYPE(switches::kDisableTouchAdjustment,
1065 UMA_HISTOGRAM_ID_kDisableTouchAdjustment)
922 }, 1066 },
923 #if defined(OS_CHROMEOS) 1067 #if defined(OS_CHROMEOS)
924 { 1068 {
925 "network-portal-notification", 1069 "network-portal-notification",
926 IDS_FLAGS_NETWORK_PORTAL_NOTIFICATION_NAME, 1070 IDS_FLAGS_NETWORK_PORTAL_NOTIFICATION_NAME,
927 IDS_FLAGS_NETWORK_PORTAL_NOTIFICATION_DESCRIPTION, 1071 IDS_FLAGS_NETWORK_PORTAL_NOTIFICATION_DESCRIPTION,
928 kOsCrOS, 1072 kOsCrOS,
929 ENABLE_DISABLE_VALUE_TYPE( 1073 ENABLE_DISABLE_VALUE_TYPE(
930 chromeos::switches::kEnableNetworkPortalNotification, 1074 chromeos::switches::kEnableNetworkPortalNotification,
931 chromeos::switches::kDisableNetworkPortalNotification) 1075 UMA_HISTOGRAM_ID_kEnableNetworkPortalNotification,
1076 chromeos::switches::kDisableNetworkPortalNotification,
1077 UMA_HISTOGRAM_ID_kDisableNetworkPortalNotification)
932 }, 1078 },
933 #endif 1079 #endif
934 { 1080 {
935 "enable-download-resumption", 1081 "enable-download-resumption",
936 IDS_FLAGS_ENABLE_DOWNLOAD_RESUMPTION_NAME, 1082 IDS_FLAGS_ENABLE_DOWNLOAD_RESUMPTION_NAME,
937 IDS_FLAGS_ENABLE_DOWNLOAD_RESUMPTION_DESCRIPTION, 1083 IDS_FLAGS_ENABLE_DOWNLOAD_RESUMPTION_DESCRIPTION,
938 kOsDesktop, 1084 kOsDesktop,
939 SINGLE_VALUE_TYPE(switches::kEnableDownloadResumption) 1085 SINGLE_VALUE_TYPE(switches::kEnableDownloadResumption,
1086 UMA_HISTOGRAM_ID_kEnableDownloadResumption)
940 }, 1087 },
941 // Native client is compiled out when DISABLE_NACL is defined. 1088 // Native client is compiled out when DISABLE_NACL is defined.
942 #if !defined(DISABLE_NACL) 1089 #if !defined(DISABLE_NACL)
943 { 1090 {
944 "allow-nacl-socket-api", 1091 "allow-nacl-socket-api",
945 IDS_FLAGS_ALLOW_NACL_SOCKET_API_NAME, 1092 IDS_FLAGS_ALLOW_NACL_SOCKET_API_NAME,
946 IDS_FLAGS_ALLOW_NACL_SOCKET_API_DESCRIPTION, 1093 IDS_FLAGS_ALLOW_NACL_SOCKET_API_DESCRIPTION,
947 kOsDesktop, 1094 kOsDesktop,
948 SINGLE_VALUE_TYPE_AND_VALUE(switches::kAllowNaClSocketAPI, "*") 1095 SINGLE_VALUE_TYPE_AND_VALUE(switches::kAllowNaClSocketAPI,
1096 "*",
1097 UMA_HISTOGRAM_ID_kAllowNaClSocketAPI)
949 }, 1098 },
950 #endif 1099 #endif
951 { 1100 {
952 "force-device-scale-factor", 1101 "force-device-scale-factor",
953 IDS_FLAGS_FORCE_HIGH_DPI_NAME, 1102 IDS_FLAGS_FORCE_HIGH_DPI_NAME,
954 IDS_FLAGS_FORCE_HIGH_DPI_DESCRIPTION, 1103 IDS_FLAGS_FORCE_HIGH_DPI_DESCRIPTION,
955 kOsCrOS, 1104 kOsCrOS,
956 SINGLE_VALUE_TYPE_AND_VALUE(switches::kForceDeviceScaleFactor, "2") 1105 SINGLE_VALUE_TYPE_AND_VALUE(switches::kForceDeviceScaleFactor,
1106 "2",
1107 UMA_HISTOGRAM_ID_kForceDeviceScaleFactor)
957 }, 1108 },
958 #if defined(OS_CHROMEOS) 1109 #if defined(OS_CHROMEOS)
959 { 1110 {
960 "allow-touchpad-three-finger-click", 1111 "allow-touchpad-three-finger-click",
961 IDS_FLAGS_ALLOW_TOUCHPAD_THREE_FINGER_CLICK_NAME, 1112 IDS_FLAGS_ALLOW_TOUCHPAD_THREE_FINGER_CLICK_NAME,
962 IDS_FLAGS_ALLOW_TOUCHPAD_THREE_FINGER_CLICK_DESCRIPTION, 1113 IDS_FLAGS_ALLOW_TOUCHPAD_THREE_FINGER_CLICK_DESCRIPTION,
963 kOsCrOS, 1114 kOsCrOS,
964 SINGLE_VALUE_TYPE(chromeos::switches::kEnableTouchpadThreeFingerClick) 1115 SINGLE_VALUE_TYPE(chromeos::switches::kEnableTouchpadThreeFingerClick,
1116 UMA_HISTOGRAM_ID_kEnableTouchpadThreeFingerClick)
965 }, 1117 },
966 #endif 1118 #endif
967 #if defined(USE_ASH) 1119 #if defined(USE_ASH)
968 { 1120 {
969 "disable-minimize-on-second-launcher-item-click", 1121 "disable-minimize-on-second-launcher-item-click",
970 IDS_FLAGS_DISABLE_MINIMIZE_ON_SECOND_LAUNCHER_ITEM_CLICK_NAME, 1122 IDS_FLAGS_DISABLE_MINIMIZE_ON_SECOND_LAUNCHER_ITEM_CLICK_NAME,
971 IDS_FLAGS_DISABLE_MINIMIZE_ON_SECOND_LAUNCHER_ITEM_CLICK_DESCRIPTION, 1123 IDS_FLAGS_DISABLE_MINIMIZE_ON_SECOND_LAUNCHER_ITEM_CLICK_DESCRIPTION,
972 kOsAll, 1124 kOsAll,
973 SINGLE_VALUE_TYPE(switches::kDisableMinimizeOnSecondLauncherItemClick) 1125 SINGLE_VALUE_TYPE(switches::kDisableMinimizeOnSecondLauncherItemClick,
1126 UMA_HISTOGRAM_ID_kDisableMinimizeOnSecondLauncherItemClick)
974 }, 1127 },
975 { 1128 {
976 "show-touch-hud", 1129 "show-touch-hud",
977 IDS_FLAGS_SHOW_TOUCH_HUD_NAME, 1130 IDS_FLAGS_SHOW_TOUCH_HUD_NAME,
978 IDS_FLAGS_SHOW_TOUCH_HUD_DESCRIPTION, 1131 IDS_FLAGS_SHOW_TOUCH_HUD_DESCRIPTION,
979 kOsAll, 1132 kOsAll,
980 SINGLE_VALUE_TYPE(ash::switches::kAshTouchHud) 1133 SINGLE_VALUE_TYPE(ash::switches::kAshTouchHud,
1134 UMA_HISTOGRAM_ID_kAshTouchHud)
981 }, 1135 },
982 { 1136 {
983 "enable-pinch", 1137 "enable-pinch",
984 IDS_FLAGS_ENABLE_PINCH_SCALE_NAME, 1138 IDS_FLAGS_ENABLE_PINCH_SCALE_NAME,
985 IDS_FLAGS_ENABLE_PINCH_SCALE_DESCRIPTION, 1139 IDS_FLAGS_ENABLE_PINCH_SCALE_DESCRIPTION,
986 kOsLinux | kOsWin | kOsCrOS, 1140 kOsLinux | kOsWin | kOsCrOS,
987 ENABLE_DISABLE_VALUE_TYPE(switches::kEnablePinch, switches::kDisablePinch), 1141 ENABLE_DISABLE_VALUE_TYPE(switches::kEnablePinch,
1142 UMA_HISTOGRAM_ID_kEnablePinch,
1143 switches::kDisablePinch,
1144 UMA_HISTOGRAM_ID_kDisablePinch)
988 }, 1145 },
989 #endif // defined(USE_ASH) 1146 #endif // defined(USE_ASH)
990 { 1147 {
991 "enable-pinch-virtual-viewport", 1148 "enable-pinch-virtual-viewport",
992 IDS_FLAGS_ENABLE_PINCH_VIRTUAL_VIEWPORT_NAME, 1149 IDS_FLAGS_ENABLE_PINCH_VIRTUAL_VIEWPORT_NAME,
993 IDS_FLAGS_ENABLE_PINCH_VIRTUAL_VIEWPORT_DESCRIPTION, 1150 IDS_FLAGS_ENABLE_PINCH_VIRTUAL_VIEWPORT_DESCRIPTION,
994 kOsLinux | kOsWin | kOsCrOS | kOsAndroid, 1151 kOsLinux | kOsWin | kOsCrOS | kOsAndroid,
995 ENABLE_DISABLE_VALUE_TYPE( 1152 ENABLE_DISABLE_VALUE_TYPE(cc::switches::kEnablePinchVirtualViewport,
996 cc::switches::kEnablePinchVirtualViewport, 1153 UMA_HISTOGRAM_ID_kEnablePinchVirtualViewport,
997 cc::switches::kDisablePinchVirtualViewport), 1154 cc::switches::kDisablePinchVirtualViewport,
1155 UMA_HISTOGRAM_ID_kDisablePinchVirtualViewport)
998 }, 1156 },
999 { 1157 {
1000 "enable-viewport-meta", 1158 "enable-viewport-meta",
1001 IDS_FLAGS_ENABLE_VIEWPORT_META_NAME, 1159 IDS_FLAGS_ENABLE_VIEWPORT_META_NAME,
1002 IDS_FLAGS_ENABLE_VIEWPORT_META_DESCRIPTION, 1160 IDS_FLAGS_ENABLE_VIEWPORT_META_DESCRIPTION,
1003 kOsLinux | kOsWin | kOsCrOS | kOsMac, 1161 kOsLinux | kOsWin | kOsCrOS | kOsMac,
1004 SINGLE_VALUE_TYPE(switches::kEnableViewportMeta), 1162 SINGLE_VALUE_TYPE(switches::kEnableViewportMeta,
1163 UMA_HISTOGRAM_ID_kEnableViewportMeta)
1005 }, 1164 },
1006 #if defined(OS_CHROMEOS) 1165 #if defined(OS_CHROMEOS)
1007 { 1166 {
1008 "disable-boot-animation", 1167 "disable-boot-animation",
1009 IDS_FLAGS_DISABLE_BOOT_ANIMATION, 1168 IDS_FLAGS_DISABLE_BOOT_ANIMATION,
1010 IDS_FLAGS_DISABLE_BOOT_ANIMATION_DESCRIPTION, 1169 IDS_FLAGS_DISABLE_BOOT_ANIMATION_DESCRIPTION,
1011 kOsCrOSOwnerOnly, 1170 kOsCrOSOwnerOnly,
1012 SINGLE_VALUE_TYPE(chromeos::switches::kDisableBootAnimation), 1171 SINGLE_VALUE_TYPE(chromeos::switches::kDisableBootAnimation,
1172 UMA_HISTOGRAM_ID_kDisableBootAnimation)
1013 }, 1173 },
1014 { 1174 {
1015 "enable-new-audio-player", 1175 "enable-new-audio-player",
1016 IDS_FLAGS_FILE_MANAGER_ENABLE_NEW_AUDIO_PLAYER_NAME, 1176 IDS_FLAGS_FILE_MANAGER_ENABLE_NEW_AUDIO_PLAYER_NAME,
1017 IDS_FLAGS_FILE_MANAGER_ENABLE_NEW_AUDIO_PLAYER_DESCRIPTION, 1177 IDS_FLAGS_FILE_MANAGER_ENABLE_NEW_AUDIO_PLAYER_DESCRIPTION,
1018 kOsCrOS, 1178 kOsCrOS,
1019 SINGLE_VALUE_TYPE(chromeos::switches::kFileManagerEnableNewAudioPlayer) 1179 SINGLE_VALUE_TYPE(chromeos::switches::kFileManagerEnableNewAudioPlayer,
1180 UMA_HISTOGRAM_ID_kFileManagerEnableNewAudioPlayer)
1020 }, 1181 },
1021 { 1182 {
1022 "enable-new-gallery", 1183 "enable-new-gallery",
1023 IDS_FLAGS_FILE_MANAGER_ENABLE_NEW_GALLERY_NAME, 1184 IDS_FLAGS_FILE_MANAGER_ENABLE_NEW_GALLERY_NAME,
1024 IDS_FLAGS_FILE_MANAGER_ENABLE_NEW_GALLERY_DESCRIPTION, 1185 IDS_FLAGS_FILE_MANAGER_ENABLE_NEW_GALLERY_DESCRIPTION,
1025 kOsCrOS, 1186 kOsCrOS,
1026 MULTI_VALUE_TYPE(kEnableFileManagerNewGalleryChoices) 1187 MULTI_VALUE_TYPE(kEnableFileManagerNewGalleryChoices)
1027 }, 1188 },
1028 { 1189 {
1029 "disable-quickoffice-component-app", 1190 "disable-quickoffice-component-app",
1030 IDS_FLAGS_DISABLE_QUICKOFFICE_COMPONENT_APP_NAME, 1191 IDS_FLAGS_DISABLE_QUICKOFFICE_COMPONENT_APP_NAME,
1031 IDS_FLAGS_DISABLE_QUICKOFFICE_COMPONENT_APP_DESCRIPTION, 1192 IDS_FLAGS_DISABLE_QUICKOFFICE_COMPONENT_APP_DESCRIPTION,
1032 kOsCrOS, 1193 kOsCrOS,
1033 SINGLE_VALUE_TYPE(chromeos::switches::kDisableQuickofficeComponentApp), 1194 SINGLE_VALUE_TYPE(chromeos::switches::kDisableQuickofficeComponentApp,
1195 UMA_HISTOGRAM_ID_kDisableQuickofficeComponentApp)
1034 }, 1196 },
1035 { 1197 {
1036 "disable-saml-signin", 1198 "disable-saml-signin",
1037 IDS_FLAGS_DISABLE_SAML_SIGNIN_NAME, 1199 IDS_FLAGS_DISABLE_SAML_SIGNIN_NAME,
1038 IDS_FLAGS_DISABLE_SAML_SIGNIN_DESCRIPTION, 1200 IDS_FLAGS_DISABLE_SAML_SIGNIN_DESCRIPTION,
1039 kOsCrOS, 1201 kOsCrOS,
1040 SINGLE_VALUE_TYPE(chromeos::switches::kDisableSamlSignin), 1202 SINGLE_VALUE_TYPE(chromeos::switches::kDisableSamlSignin,
1203 UMA_HISTOGRAM_ID_kDisableSamlSignin)
1041 }, 1204 },
1042 { 1205 {
1043 "disable-display-color-calibration", 1206 "disable-display-color-calibration",
1044 IDS_FLAGS_DISABLE_DISPLAY_COLOR_CALIBRATION_NAME, 1207 IDS_FLAGS_DISABLE_DISPLAY_COLOR_CALIBRATION_NAME,
1045 IDS_FLAGS_DISABLE_DISPLAY_COLOR_CALIBRATION_DESCRIPTION, 1208 IDS_FLAGS_DISABLE_DISPLAY_COLOR_CALIBRATION_DESCRIPTION,
1046 kOsCrOS, 1209 kOsCrOS,
1047 SINGLE_VALUE_TYPE(ui::switches::kDisableDisplayColorCalibration), 1210 SINGLE_VALUE_TYPE(ui::switches::kDisableDisplayColorCalibration,
1211 UMA_HISTOGRAM_ID_kDisableDisplayColorCalibration)
1048 }, 1212 },
1049 #endif // defined(OS_CHROMEOS) 1213 #endif // defined(OS_CHROMEOS)
1050 { "disable-accelerated-video-decode", 1214 {
1215 "disable-accelerated-video-decode",
1051 IDS_FLAGS_DISABLE_ACCELERATED_VIDEO_DECODE_NAME, 1216 IDS_FLAGS_DISABLE_ACCELERATED_VIDEO_DECODE_NAME,
1052 IDS_FLAGS_DISABLE_ACCELERATED_VIDEO_DECODE_DESCRIPTION, 1217 IDS_FLAGS_DISABLE_ACCELERATED_VIDEO_DECODE_DESCRIPTION,
1053 kOsWin | kOsCrOS, 1218 kOsWin | kOsCrOS,
1054 SINGLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), 1219 SINGLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode,
1220 UMA_HISTOGRAM_ID_kDisableAcceleratedVideoDecode)
1055 }, 1221 },
1056 #if defined(USE_ASH) 1222 #if defined(USE_ASH)
1057 { 1223 {
1058 "ash-debug-shortcuts", 1224 "ash-debug-shortcuts",
1059 IDS_FLAGS_DEBUG_SHORTCUTS_NAME, 1225 IDS_FLAGS_DEBUG_SHORTCUTS_NAME,
1060 IDS_FLAGS_DEBUG_SHORTCUTS_DESCRIPTION, 1226 IDS_FLAGS_DEBUG_SHORTCUTS_DESCRIPTION,
1061 kOsAll, 1227 kOsAll,
1062 SINGLE_VALUE_TYPE(ash::switches::kAshDebugShortcuts), 1228 SINGLE_VALUE_TYPE(ash::switches::kAshDebugShortcuts,
1229 UMA_HISTOGRAM_ID_kAshDebugShortcuts)
1063 }, 1230 },
1064 { "ash-enable-touch-view-testing", 1231 {
1232 "ash-enable-touch-view-testing",
1065 IDS_FLAGS_ASH_ENABLE_TOUCH_VIEW_TESTING_NAME, 1233 IDS_FLAGS_ASH_ENABLE_TOUCH_VIEW_TESTING_NAME,
1066 IDS_FLAGS_ASH_ENABLE_TOUCH_VIEW_TESTING_DESCRIPTION, 1234 IDS_FLAGS_ASH_ENABLE_TOUCH_VIEW_TESTING_DESCRIPTION,
1067 kOsCrOS, 1235 kOsCrOS,
1068 SINGLE_VALUE_TYPE(ash::switches::kAshEnableTouchViewTesting), 1236 SINGLE_VALUE_TYPE(ash::switches::kAshEnableTouchViewTesting,
1237 UMA_HISTOGRAM_ID_kAshEnableTouchViewTesting)
1069 }, 1238 },
1070 #endif 1239 #endif
1071 #if defined(OS_CHROMEOS) 1240 #if defined(OS_CHROMEOS)
1072 { 1241 {
1073 "enable-carrier-switching", 1242 "enable-carrier-switching",
1074 IDS_FLAGS_ENABLE_CARRIER_SWITCHING, 1243 IDS_FLAGS_ENABLE_CARRIER_SWITCHING,
1075 IDS_FLAGS_ENABLE_CARRIER_SWITCHING_DESCRIPTION, 1244 IDS_FLAGS_ENABLE_CARRIER_SWITCHING_DESCRIPTION,
1076 kOsCrOS, 1245 kOsCrOS,
1077 SINGLE_VALUE_TYPE(chromeos::switches::kEnableCarrierSwitching) 1246 SINGLE_VALUE_TYPE(chromeos::switches::kEnableCarrierSwitching,
1247 UMA_HISTOGRAM_ID_kEnableCarrierSwitching)
1078 }, 1248 },
1079 { 1249 {
1080 "enable-request-tablet-site", 1250 "enable-request-tablet-site",
1081 IDS_FLAGS_ENABLE_REQUEST_TABLET_SITE_NAME, 1251 IDS_FLAGS_ENABLE_REQUEST_TABLET_SITE_NAME,
1082 IDS_FLAGS_ENABLE_REQUEST_TABLET_SITE_DESCRIPTION, 1252 IDS_FLAGS_ENABLE_REQUEST_TABLET_SITE_DESCRIPTION,
1083 kOsCrOS, 1253 kOsCrOS,
1084 SINGLE_VALUE_TYPE(chromeos::switches::kEnableRequestTabletSite) 1254 SINGLE_VALUE_TYPE(chromeos::switches::kEnableRequestTabletSite,
1255 UMA_HISTOGRAM_ID_kEnableRequestTabletSite)
1085 }, 1256 },
1086 #endif 1257 #endif
1087 { 1258 {
1088 "debug-packed-apps", 1259 "debug-packed-apps",
1089 IDS_FLAGS_DEBUG_PACKED_APP_NAME, 1260 IDS_FLAGS_DEBUG_PACKED_APP_NAME,
1090 IDS_FLAGS_DEBUG_PACKED_APP_DESCRIPTION, 1261 IDS_FLAGS_DEBUG_PACKED_APP_DESCRIPTION,
1091 kOsDesktop, 1262 kOsDesktop,
1092 SINGLE_VALUE_TYPE(switches::kDebugPackedApps) 1263 SINGLE_VALUE_TYPE(switches::kDebugPackedApps,
1264 UMA_HISTOGRAM_ID_kDebugPackedApps)
1093 }, 1265 },
1094 { 1266 {
1095 "enable-password-generation", 1267 "enable-password-generation",
1096 IDS_FLAGS_ENABLE_PASSWORD_GENERATION_NAME, 1268 IDS_FLAGS_ENABLE_PASSWORD_GENERATION_NAME,
1097 IDS_FLAGS_ENABLE_PASSWORD_GENERATION_DESCRIPTION, 1269 IDS_FLAGS_ENABLE_PASSWORD_GENERATION_DESCRIPTION,
1098 kOsDesktop, 1270 kOsDesktop,
1099 ENABLE_DISABLE_VALUE_TYPE(autofill::switches::kEnablePasswordGeneration, 1271 ENABLE_DISABLE_VALUE_TYPE(autofill::switches::kEnablePasswordGeneration,
1100 autofill::switches::kDisablePasswordGeneration) 1272 UMA_HISTOGRAM_ID_kEnablePasswordGeneration,
1273 autofill::switches::kDisablePasswordGeneration,
1274 UMA_HISTOGRAM_ID_kDisablePasswordGeneration)
1101 }, 1275 },
1102 { 1276 {
1103 "enable-automatic-password-saving", 1277 "enable-automatic-password-saving",
1104 IDS_FLAGS_ENABLE_AUTOMATIC_PASSWORD_SAVING_NAME, 1278 IDS_FLAGS_ENABLE_AUTOMATIC_PASSWORD_SAVING_NAME,
1105 IDS_FLAGS_ENABLE_AUTOMATIC_PASSWORD_SAVING_DESCRIPTION, 1279 IDS_FLAGS_ENABLE_AUTOMATIC_PASSWORD_SAVING_DESCRIPTION,
1106 kOsDesktop, 1280 kOsDesktop,
1107 SINGLE_VALUE_TYPE( 1281 SINGLE_VALUE_TYPE(
1108 password_manager::switches::kEnableAutomaticPasswordSaving) 1282 password_manager::switches::kEnableAutomaticPasswordSaving,
1283 UMA_HISTOGRAM_ID_kEnableAutomaticPasswordSaving)
1109 }, 1284 },
1110 { 1285 {
1111 "password-manager-reauthentication", 1286 "password-manager-reauthentication",
1112 IDS_FLAGS_PASSWORD_MANAGER_REAUTHENTICATION_NAME, 1287 IDS_FLAGS_PASSWORD_MANAGER_REAUTHENTICATION_NAME,
1113 IDS_FLAGS_PASSWORD_MANAGER_REAUTHENTICATION_DESCRIPTION, 1288 IDS_FLAGS_PASSWORD_MANAGER_REAUTHENTICATION_DESCRIPTION,
1114 kOsMac | kOsWin, 1289 kOsMac | kOsWin,
1115 SINGLE_VALUE_TYPE(switches::kDisablePasswordManagerReauthentication) 1290 SINGLE_VALUE_TYPE(
1291 switches::kDisablePasswordManagerReauthentication,
1292 UMA_HISTOGRAM_ID_kDisablePasswordManagerReauthentication)
1116 }, 1293 },
1117 { 1294 {
1118 "enable-deferred-image-decoding", 1295 "enable-deferred-image-decoding",
1119 IDS_FLAGS_ENABLE_DEFERRED_IMAGE_DECODING_NAME, 1296 IDS_FLAGS_ENABLE_DEFERRED_IMAGE_DECODING_NAME,
1120 IDS_FLAGS_ENABLE_DEFERRED_IMAGE_DECODING_DESCRIPTION, 1297 IDS_FLAGS_ENABLE_DEFERRED_IMAGE_DECODING_DESCRIPTION,
1121 kOsMac | kOsLinux | kOsCrOS, 1298 kOsMac | kOsLinux | kOsCrOS,
1122 SINGLE_VALUE_TYPE(switches::kEnableDeferredImageDecoding) 1299 SINGLE_VALUE_TYPE(switches::kEnableDeferredImageDecoding,
1300 UMA_HISTOGRAM_ID_kEnableDeferredImageDecoding)
1123 }, 1301 },
1124 { 1302 {
1125 "performance-monitor-gathering", 1303 "performance-monitor-gathering",
1126 IDS_FLAGS_PERFORMANCE_MONITOR_GATHERING_NAME, 1304 IDS_FLAGS_PERFORMANCE_MONITOR_GATHERING_NAME,
1127 IDS_FLAGS_PERFORMANCE_MONITOR_GATHERING_DESCRIPTION, 1305 IDS_FLAGS_PERFORMANCE_MONITOR_GATHERING_DESCRIPTION,
1128 kOsAll, 1306 kOsAll,
1129 SINGLE_VALUE_TYPE(switches::kPerformanceMonitorGathering) 1307 SINGLE_VALUE_TYPE(switches::kPerformanceMonitorGathering,
1308 UMA_HISTOGRAM_ID_kPerformanceMonitorGathering)
1130 }, 1309 },
1131 { 1310 {
1132 "wallet-service-use-sandbox", 1311 "wallet-service-use-sandbox",
1133 IDS_FLAGS_WALLET_SERVICE_USE_SANDBOX_NAME, 1312 IDS_FLAGS_WALLET_SERVICE_USE_SANDBOX_NAME,
1134 IDS_FLAGS_WALLET_SERVICE_USE_SANDBOX_DESCRIPTION, 1313 IDS_FLAGS_WALLET_SERVICE_USE_SANDBOX_DESCRIPTION,
1135 kOsAndroid | kOsDesktop, 1314 kOsAndroid | kOsDesktop,
1136 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE( 1315 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
1137 autofill::switches::kWalletServiceUseSandbox, "1", 1316 autofill::switches::kWalletServiceUseSandbox, "1",
1138 autofill::switches::kWalletServiceUseSandbox, "0") 1317 UMA_HISTOGRAM_ID_kWalletServiceUseSandbox,
1318 autofill::switches::kWalletServiceUseSandbox, "0",
1319 UMA_HISTOGRAM_ID_kWalletServiceUseSandbox)
1139 }, 1320 },
1140 #if defined(USE_AURA) 1321 #if defined(USE_AURA)
1141 { 1322 {
1142 "overscroll-history-navigation", 1323 "overscroll-history-navigation",
1143 IDS_FLAGS_OVERSCROLL_HISTORY_NAVIGATION_NAME, 1324 IDS_FLAGS_OVERSCROLL_HISTORY_NAVIGATION_NAME,
1144 IDS_FLAGS_OVERSCROLL_HISTORY_NAVIGATION_DESCRIPTION, 1325 IDS_FLAGS_OVERSCROLL_HISTORY_NAVIGATION_DESCRIPTION,
1145 kOsAll, 1326 kOsAll,
1146 MULTI_VALUE_TYPE(kOverscrollHistoryNavigationChoices) 1327 MULTI_VALUE_TYPE(kOverscrollHistoryNavigationChoices)
1147 }, 1328 },
1148 #endif 1329 #endif
1149 { 1330 {
1150 "scroll-end-effect", 1331 "scroll-end-effect",
1151 IDS_FLAGS_SCROLL_END_EFFECT_NAME, 1332 IDS_FLAGS_SCROLL_END_EFFECT_NAME,
1152 IDS_FLAGS_SCROLL_END_EFFECT_DESCRIPTION, 1333 IDS_FLAGS_SCROLL_END_EFFECT_DESCRIPTION,
1153 kOsCrOS, 1334 kOsCrOS,
1154 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE( 1335 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
1155 switches::kScrollEndEffect, "1", 1336 switches::kScrollEndEffect, "1",
1156 switches::kScrollEndEffect, "0") 1337 UMA_HISTOGRAM_ID_kScrollEndEffect,
1338 switches::kScrollEndEffect, "0",
1339 UMA_HISTOGRAM_ID_kScrollEndEffect)
1157 }, 1340 },
1158 { 1341 {
1159 "enable-touch-drag-drop", 1342 "enable-touch-drag-drop",
1160 IDS_FLAGS_ENABLE_TOUCH_DRAG_DROP_NAME, 1343 IDS_FLAGS_ENABLE_TOUCH_DRAG_DROP_NAME,
1161 IDS_FLAGS_ENABLE_TOUCH_DRAG_DROP_DESCRIPTION, 1344 IDS_FLAGS_ENABLE_TOUCH_DRAG_DROP_DESCRIPTION,
1162 kOsWin | kOsCrOS, 1345 kOsWin | kOsCrOS,
1163 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTouchDragDrop, 1346 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTouchDragDrop,
1164 switches::kDisableTouchDragDrop) 1347 UMA_HISTOGRAM_ID_kEnableTouchDragDrop,
1348 switches::kDisableTouchDragDrop,
1349 UMA_HISTOGRAM_ID_kDisableTouchDragDrop)
1165 }, 1350 },
1166 { 1351 {
1167 "enable-touch-editing", 1352 "enable-touch-editing",
1168 IDS_FLAGS_ENABLE_TOUCH_EDITING_NAME, 1353 IDS_FLAGS_ENABLE_TOUCH_EDITING_NAME,
1169 IDS_FLAGS_ENABLE_TOUCH_EDITING_DESCRIPTION, 1354 IDS_FLAGS_ENABLE_TOUCH_EDITING_DESCRIPTION,
1170 kOsCrOS | kOsWin | kOsLinux, 1355 kOsCrOS | kOsWin | kOsLinux,
1171 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTouchEditing, 1356 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTouchEditing,
1172 switches::kDisableTouchEditing) 1357 UMA_HISTOGRAM_ID_kEnableTouchEditing,
1358 switches::kDisableTouchEditing,
1359 UMA_HISTOGRAM_ID_kDisableTouchEditing)
1173 }, 1360 },
1174 { 1361 {
1175 "enable-suggestions-service", 1362 "enable-suggestions-service",
1176 IDS_FLAGS_ENABLE_SUGGESTIONS_SERVICE_NAME, 1363 IDS_FLAGS_ENABLE_SUGGESTIONS_SERVICE_NAME,
1177 IDS_FLAGS_ENABLE_SUGGESTIONS_SERVICE_DESCRIPTION, 1364 IDS_FLAGS_ENABLE_SUGGESTIONS_SERVICE_DESCRIPTION,
1178 kOsAndroid | kOsCrOS, 1365 kOsAndroid | kOsCrOS,
1179 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSuggestionsService, 1366 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSuggestionsService,
1180 switches::kDisableSuggestionsService) 1367 UMA_HISTOGRAM_ID_kEnableSuggestionsService,
1368 switches::kDisableSuggestionsService,
1369 UMA_HISTOGRAM_ID_kDisableSuggestionsService)
1181 }, 1370 },
1182 { 1371 {
1183 "enable-sync-synced-notifications", 1372 "enable-sync-synced-notifications",
1184 IDS_FLAGS_ENABLE_SYNCED_NOTIFICATIONS_NAME, 1373 IDS_FLAGS_ENABLE_SYNCED_NOTIFICATIONS_NAME,
1185 IDS_FLAGS_ENABLE_SYNCED_NOTIFICATIONS_DESCRIPTION, 1374 IDS_FLAGS_ENABLE_SYNCED_NOTIFICATIONS_DESCRIPTION,
1186 kOsDesktop, 1375 kOsDesktop,
1187 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSyncSyncedNotifications, 1376 ENABLE_DISABLE_VALUE_TYPE(
1188 switches::kDisableSyncSyncedNotifications) 1377 switches::kEnableSyncSyncedNotifications,
1378 UMA_HISTOGRAM_ID_kEnableSyncSyncedNotifications,
1379 switches::kDisableSyncSyncedNotifications,
1380 UMA_HISTOGRAM_ID_kDisableSyncSyncedNotifications)
1189 }, 1381 },
1190 #if defined(ENABLE_APP_LIST) 1382 #if defined(ENABLE_APP_LIST)
1191 { 1383 {
1192 "enable-sync-app-list", 1384 "enable-sync-app-list",
1193 IDS_FLAGS_ENABLE_SYNC_APP_LIST_NAME, 1385 IDS_FLAGS_ENABLE_SYNC_APP_LIST_NAME,
1194 IDS_FLAGS_ENABLE_SYNC_APP_LIST_DESCRIPTION, 1386 IDS_FLAGS_ENABLE_SYNC_APP_LIST_DESCRIPTION,
1195 kOsDesktop, 1387 kOsDesktop,
1196 MULTI_VALUE_TYPE(kEnableSyncAppListChoices) 1388 MULTI_VALUE_TYPE(kEnableSyncAppListChoices)
1197 }, 1389 },
1198 #endif 1390 #endif
1199 #if defined(OS_MACOSX) 1391 #if defined(OS_MACOSX)
1200 { 1392 {
1201 "enable-avfoundation", 1393 "enable-avfoundation",
1202 IDS_FLAGS_ENABLE_AVFOUNDATION_NAME, 1394 IDS_FLAGS_ENABLE_AVFOUNDATION_NAME,
1203 IDS_FLAGS_ENABLE_AVFOUNDATION_DESCRIPTION, 1395 IDS_FLAGS_ENABLE_AVFOUNDATION_DESCRIPTION,
1204 kOsMac, 1396 kOsMac,
1205 SINGLE_VALUE_TYPE(switches::kEnableAVFoundation) 1397 SINGLE_VALUE_TYPE(switches::kEnableAVFoundation,
1398 UMA_HISTOGRAM_ID_kEnableAVFoundation)
1206 }, 1399 },
1207 #endif 1400 #endif
1208 { 1401 {
1209 "impl-side-painting", 1402 "impl-side-painting",
1210 IDS_FLAGS_IMPL_SIDE_PAINTING_NAME, 1403 IDS_FLAGS_IMPL_SIDE_PAINTING_NAME,
1211 IDS_FLAGS_IMPL_SIDE_PAINTING_DESCRIPTION, 1404 IDS_FLAGS_IMPL_SIDE_PAINTING_DESCRIPTION,
1212 kOsAll, 1405 kOsAll,
1213 MULTI_VALUE_TYPE(kImplSidePaintingChoices) 1406 MULTI_VALUE_TYPE(kImplSidePaintingChoices)
1214 }, 1407 },
1215 { 1408 {
(...skipping 18 matching lines...) Expand all
1234 IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_DESCRIPTION, 1427 IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_DESCRIPTION,
1235 kOsAll, 1428 kOsAll,
1236 MULTI_VALUE_TYPE(kMaxTilesForInterestAreaChoices) 1429 MULTI_VALUE_TYPE(kMaxTilesForInterestAreaChoices)
1237 }, 1430 },
1238 { 1431 {
1239 "enable-offline-auto-reload", 1432 "enable-offline-auto-reload",
1240 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_NAME, 1433 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_NAME,
1241 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_DESCRIPTION, 1434 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_DESCRIPTION,
1242 kOsAll, 1435 kOsAll,
1243 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOfflineAutoReload, 1436 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOfflineAutoReload,
1244 switches::kDisableOfflineAutoReload) 1437 UMA_HISTOGRAM_ID_kEnableOfflineAutoReload,
1438 switches::kDisableOfflineAutoReload,
1439 UMA_HISTOGRAM_ID_kDisableOfflineAutoReload)
1245 }, 1440 },
1246 { 1441 {
1247 "enable-offline-auto-reload-visible-only", 1442 "enable-offline-auto-reload-visible-only",
1248 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_VISIBLE_ONLY_NAME, 1443 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_VISIBLE_ONLY_NAME,
1249 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_VISIBLE_ONLY_DESCRIPTION, 1444 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_VISIBLE_ONLY_DESCRIPTION,
1250 kOsAll, 1445 kOsAll,
1251 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOfflineAutoReloadVisibleOnly, 1446 ENABLE_DISABLE_VALUE_TYPE(
1252 switches::kDisableOfflineAutoReloadVisibleOnly) 1447 switches::kEnableOfflineAutoReloadVisibleOnly,
1448 UMA_HISTOGRAM_ID_kEnableOfflineAutoReloadVisibleOnly,
1449 switches::kDisableOfflineAutoReloadVisibleOnly,
1450 UMA_HISTOGRAM_ID_kDisableOfflineAutoReloadVisibleOnly)
1253 }, 1451 },
1254 { 1452 {
1255 "enable-offline-load-stale-cache", 1453 "enable-offline-load-stale-cache",
1256 IDS_FLAGS_ENABLE_OFFLINE_LOAD_STALE_NAME, 1454 IDS_FLAGS_ENABLE_OFFLINE_LOAD_STALE_NAME,
1257 IDS_FLAGS_ENABLE_OFFLINE_LOAD_STALE_DESCRIPTION, 1455 IDS_FLAGS_ENABLE_OFFLINE_LOAD_STALE_DESCRIPTION,
1258 kOsLinux | kOsMac | kOsWin | kOsAndroid, 1456 kOsLinux | kOsMac | kOsWin | kOsAndroid,
1259 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOfflineLoadStaleCache, 1457 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOfflineLoadStaleCache,
1260 switches::kDisableOfflineLoadStaleCache) 1458 UMA_HISTOGRAM_ID_kEnableOfflineLoadStaleCache,
1459 switches::kDisableOfflineLoadStaleCache,
1460 UMA_HISTOGRAM_ID_kDisableOfflineLoadStaleCache)
1261 }, 1461 },
1262 { 1462 {
1263 "default-tile-width", 1463 "default-tile-width",
1264 IDS_FLAGS_DEFAULT_TILE_WIDTH_NAME, 1464 IDS_FLAGS_DEFAULT_TILE_WIDTH_NAME,
1265 IDS_FLAGS_DEFAULT_TILE_WIDTH_DESCRIPTION, 1465 IDS_FLAGS_DEFAULT_TILE_WIDTH_DESCRIPTION,
1266 kOsAll, 1466 kOsAll,
1267 MULTI_VALUE_TYPE(kDefaultTileWidthChoices) 1467 MULTI_VALUE_TYPE(kDefaultTileWidthChoices)
1268 }, 1468 },
1269 { 1469 {
1270 "default-tile-height", 1470 "default-tile-height",
1271 IDS_FLAGS_DEFAULT_TILE_HEIGHT_NAME, 1471 IDS_FLAGS_DEFAULT_TILE_HEIGHT_NAME,
1272 IDS_FLAGS_DEFAULT_TILE_HEIGHT_DESCRIPTION, 1472 IDS_FLAGS_DEFAULT_TILE_HEIGHT_DESCRIPTION,
1273 kOsAll, 1473 kOsAll,
1274 MULTI_VALUE_TYPE(kDefaultTileHeightChoices) 1474 MULTI_VALUE_TYPE(kDefaultTileHeightChoices)
1275 }, 1475 },
1276 #if defined(OS_ANDROID) 1476 #if defined(OS_ANDROID)
1277 { 1477 {
1278 "disable-gesture-requirement-for-media-playback", 1478 "disable-gesture-requirement-for-media-playback",
1279 IDS_FLAGS_DISABLE_GESTURE_REQUIREMENT_FOR_MEDIA_PLAYBACK_NAME, 1479 IDS_FLAGS_DISABLE_GESTURE_REQUIREMENT_FOR_MEDIA_PLAYBACK_NAME,
1280 IDS_FLAGS_DISABLE_GESTURE_REQUIREMENT_FOR_MEDIA_PLAYBACK_DESCRIPTION, 1480 IDS_FLAGS_DISABLE_GESTURE_REQUIREMENT_FOR_MEDIA_PLAYBACK_DESCRIPTION,
1281 kOsAndroid, 1481 kOsAndroid,
1282 SINGLE_VALUE_TYPE(switches::kDisableGestureRequirementForMediaPlayback) 1482 SINGLE_VALUE_TYPE(
1483 switches::kDisableGestureRequirementForMediaPlayback,
1484 UMA_HISTOGRAM_ID_kDisableGestureRequirementForMediaPlayback)
1283 }, 1485 },
1284 #endif 1486 #endif
1285 #if defined(OS_CHROMEOS) 1487 #if defined(OS_CHROMEOS)
1286 { 1488 {
1287 "enable-virtual-keyboard", 1489 "enable-virtual-keyboard",
1288 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_NAME, 1490 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_NAME,
1289 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_DESCRIPTION, 1491 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_DESCRIPTION,
1290 kOsCrOS, 1492 kOsCrOS,
1291 SINGLE_VALUE_TYPE(keyboard::switches::kEnableVirtualKeyboard) 1493 SINGLE_VALUE_TYPE(keyboard::switches::kEnableVirtualKeyboard,
1494 UMA_HISTOGRAM_ID_kEnableVirtualKeyboard)
1292 }, 1495 },
1293 { 1496 {
1294 "enable-virtual-keyboard-overscroll", 1497 "enable-virtual-keyboard-overscroll",
1295 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_OVERSCROLL_NAME, 1498 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_OVERSCROLL_NAME,
1296 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_OVERSCROLL_DESCRIPTION, 1499 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_OVERSCROLL_DESCRIPTION,
1297 kOsCrOS, 1500 kOsCrOS,
1298 ENABLE_DISABLE_VALUE_TYPE( 1501 ENABLE_DISABLE_VALUE_TYPE(
1299 keyboard::switches::kEnableVirtualKeyboardOverscroll, 1502 keyboard::switches::kEnableVirtualKeyboardOverscroll,
1300 keyboard::switches::kDisableVirtualKeyboardOverscroll) 1503 UMA_HISTOGRAM_ID_kEnableVirtualKeyboardOverscroll,
1504 keyboard::switches::kDisableVirtualKeyboardOverscroll,
1505 UMA_HISTOGRAM_ID_kDisableVirtualKeyboardOverscroll)
1301 }, 1506 },
1302 { 1507 {
1303 "enable-swipe-selection", 1508 "enable-swipe-selection",
1304 IDS_FLAGS_ENABLE_SWIPE_SELECTION_NAME, 1509 IDS_FLAGS_ENABLE_SWIPE_SELECTION_NAME,
1305 IDS_FLAGS_ENABLE_SWIPE_SELECTION_DESCRIPTION, 1510 IDS_FLAGS_ENABLE_SWIPE_SELECTION_DESCRIPTION,
1306 kOsCrOS, 1511 kOsCrOS,
1307 SINGLE_VALUE_TYPE(keyboard::switches::kEnableSwipeSelection) 1512 SINGLE_VALUE_TYPE(keyboard::switches::kEnableSwipeSelection,
1513 UMA_HISTOGRAM_ID_kEnableSwipeSelection)
1308 }, 1514 },
1309 { 1515 {
1310 "enable-input-view", 1516 "enable-input-view",
1311 IDS_FLAGS_ENABLE_INPUT_VIEW_NAME, 1517 IDS_FLAGS_ENABLE_INPUT_VIEW_NAME,
1312 IDS_FLAGS_ENABLE_INPUT_VIEW_DESCRIPTION, 1518 IDS_FLAGS_ENABLE_INPUT_VIEW_DESCRIPTION,
1313 kOsCrOS, 1519 kOsCrOS,
1314 ENABLE_DISABLE_VALUE_TYPE(keyboard::switches::kEnableInputView, 1520 ENABLE_DISABLE_VALUE_TYPE(keyboard::switches::kEnableInputView,
1315 keyboard::switches::kDisableInputView) 1521 UMA_HISTOGRAM_ID_kEnableInputView,
1522 keyboard::switches::kDisableInputView,
1523 UMA_HISTOGRAM_ID_kDisableInputView)
1316 }, 1524 },
1317 { 1525 {
1318 "enable-experimental-input-view-features", 1526 "enable-experimental-input-view-features",
1319 IDS_FLAGS_ENABLE_EXPERIMENTAL_INPUT_VIEW_FEATURES_NAME, 1527 IDS_FLAGS_ENABLE_EXPERIMENTAL_INPUT_VIEW_FEATURES_NAME,
1320 IDS_FLAGS_ENABLE_EXPERIMENTAL_INPUT_VIEW_FEATURES_DESCRIPTION, 1528 IDS_FLAGS_ENABLE_EXPERIMENTAL_INPUT_VIEW_FEATURES_DESCRIPTION,
1321 kOsCrOS, 1529 kOsCrOS,
1322 SINGLE_VALUE_TYPE(keyboard::switches::kEnableExperimentalInputViewFeatures) 1530 SINGLE_VALUE_TYPE(keyboard::switches::kEnableExperimentalInputViewFeatures,
1531 UMA_HISTOGRAM_ID_kEnableExperimentalInputViewFeatures)
1323 }, 1532 },
1324 #endif 1533 #endif
1325 { 1534 {
1326 "enable-simple-cache-backend", 1535 "enable-simple-cache-backend",
1327 IDS_FLAGS_ENABLE_SIMPLE_CACHE_BACKEND_NAME, 1536 IDS_FLAGS_ENABLE_SIMPLE_CACHE_BACKEND_NAME,
1328 IDS_FLAGS_ENABLE_SIMPLE_CACHE_BACKEND_DESCRIPTION, 1537 IDS_FLAGS_ENABLE_SIMPLE_CACHE_BACKEND_DESCRIPTION,
1329 kOsWin | kOsMac | kOsLinux | kOsCrOS, 1538 kOsWin | kOsMac | kOsLinux | kOsCrOS,
1330 MULTI_VALUE_TYPE(kSimpleCacheBackendChoices) 1539 MULTI_VALUE_TYPE(kSimpleCacheBackendChoices)
1331 }, 1540 },
1332 { 1541 {
1333 "enable-tcp-fast-open", 1542 "enable-tcp-fast-open",
1334 IDS_FLAGS_ENABLE_TCP_FAST_OPEN_NAME, 1543 IDS_FLAGS_ENABLE_TCP_FAST_OPEN_NAME,
1335 IDS_FLAGS_ENABLE_TCP_FAST_OPEN_DESCRIPTION, 1544 IDS_FLAGS_ENABLE_TCP_FAST_OPEN_DESCRIPTION,
1336 kOsLinux | kOsCrOS | kOsAndroid, 1545 kOsLinux | kOsCrOS | kOsAndroid,
1337 SINGLE_VALUE_TYPE(switches::kEnableTcpFastOpen) 1546 SINGLE_VALUE_TYPE(switches::kEnableTcpFastOpen,
1547 UMA_HISTOGRAM_ID_kEnableTcpFastOpen)
1338 }, 1548 },
1339 { 1549 {
1340 "enable-syncfs-directory-operation", 1550 "enable-syncfs-directory-operation",
1341 IDS_FLAGS_ENABLE_SYNC_DIRECTORY_OPERATION_NAME, 1551 IDS_FLAGS_ENABLE_SYNC_DIRECTORY_OPERATION_NAME,
1342 IDS_FLAGS_ENABLE_SYNC_DIRECTORY_OPERATION_DESCRIPTION, 1552 IDS_FLAGS_ENABLE_SYNC_DIRECTORY_OPERATION_DESCRIPTION,
1343 kOsAll, 1553 kOsAll,
1344 SINGLE_VALUE_TYPE(switches::kSyncfsEnableDirectoryOperation), 1554 SINGLE_VALUE_TYPE(switches::kSyncfsEnableDirectoryOperation,
1555 UMA_HISTOGRAM_ID_kSyncfsEnableDirectoryOperation)
1345 }, 1556 },
1346 #if defined(ENABLE_SERVICE_DISCOVERY) 1557 #if defined(ENABLE_SERVICE_DISCOVERY)
1347 { 1558 {
1348 "disable-device-discovery", 1559 "disable-device-discovery",
1349 IDS_FLAGS_DISABLE_DEVICE_DISCOVERY_NAME, 1560 IDS_FLAGS_DISABLE_DEVICE_DISCOVERY_NAME,
1350 IDS_FLAGS_DISABLE_DEVICE_DISCOVERY_DESCRIPTION, 1561 IDS_FLAGS_DISABLE_DEVICE_DISCOVERY_DESCRIPTION,
1351 kOsDesktop, 1562 kOsDesktop,
1352 SINGLE_VALUE_TYPE(switches::kDisableDeviceDiscovery) 1563 SINGLE_VALUE_TYPE(switches::kDisableDeviceDiscovery,
1564 UMA_HISTOGRAM_ID_kDisableDeviceDiscovery)
1353 }, 1565 },
1354 { 1566 {
1355 "device-discovery-notifications", 1567 "device-discovery-notifications",
1356 IDS_FLAGS_DEVICE_DISCOVERY_NOTIFICATIONS_NAME, 1568 IDS_FLAGS_DEVICE_DISCOVERY_NOTIFICATIONS_NAME,
1357 IDS_FLAGS_DEVICE_DISCOVERY_NOTIFICATIONS_DESCRIPTION, 1569 IDS_FLAGS_DEVICE_DISCOVERY_NOTIFICATIONS_DESCRIPTION,
1358 kOsDesktop, 1570 kOsDesktop,
1359 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableDeviceDiscoveryNotifications, 1571 ENABLE_DISABLE_VALUE_TYPE(
1360 switches::kDisableDeviceDiscoveryNotifications) 1572 switches::kEnableDeviceDiscoveryNotifications,
1573 UMA_HISTOGRAM_ID_kEnableDeviceDiscoveryNotifications,
1574 switches::kDisableDeviceDiscoveryNotifications,
1575 UMA_HISTOGRAM_ID_kDisableDeviceDiscoveryNotifications)
1361 }, 1576 },
1362 { 1577 {
1363 "enable-cloud-devices", 1578 "enable-cloud-devices",
1364 IDS_FLAGS_ENABLE_CLOUD_DEVICES_NAME, 1579 IDS_FLAGS_ENABLE_CLOUD_DEVICES_NAME,
1365 IDS_FLAGS_ENABLE_CLOUD_DEVICES_DESCRIPTION, 1580 IDS_FLAGS_ENABLE_CLOUD_DEVICES_DESCRIPTION,
1366 kOsDesktop, 1581 kOsDesktop,
1367 SINGLE_VALUE_TYPE(switches::kEnableCloudDevices) 1582 SINGLE_VALUE_TYPE(switches::kEnableCloudDevices,
1583 UMA_HISTOGRAM_ID_kEnableCloudDevices)
1368 }, 1584 },
1369 { 1585 {
1370 "enable-print-preview-register-promos", 1586 "enable-print-preview-register-promos",
1371 IDS_FLAGS_ENABLE_PRINT_PREVIEW_REGISTER_PROMOS_NAME, 1587 IDS_FLAGS_ENABLE_PRINT_PREVIEW_REGISTER_PROMOS_NAME,
1372 IDS_FLAGS_ENABLE_PRINT_PREVIEW_REGISTER_PROMOS_DESCRIPTION, 1588 IDS_FLAGS_ENABLE_PRINT_PREVIEW_REGISTER_PROMOS_DESCRIPTION,
1373 kOsDesktop, 1589 kOsDesktop,
1374 SINGLE_VALUE_TYPE(switches::kEnablePrintPreviewRegisterPromos) 1590 SINGLE_VALUE_TYPE(switches::kEnablePrintPreviewRegisterPromos,
1591 UMA_HISTOGRAM_ID_kEnablePrintPreviewRegisterPromos)
1375 }, 1592 },
1376 #endif // ENABLE_SERVICE_DISCOVERY 1593 #endif // ENABLE_SERVICE_DISCOVERY
1377 #if defined(OS_WIN) 1594 #if defined(OS_WIN)
1378 { 1595 {
1379 "enable-cloud-print-xps", 1596 "enable-cloud-print-xps",
1380 IDS_FLAGS_ENABLE_CLOUD_PRINT_XPS_NAME, 1597 IDS_FLAGS_ENABLE_CLOUD_PRINT_XPS_NAME,
1381 IDS_FLAGS_ENABLE_CLOUD_PRINT_XPS_DESCRIPTION, 1598 IDS_FLAGS_ENABLE_CLOUD_PRINT_XPS_DESCRIPTION,
1382 kOsWin, 1599 kOsWin,
1383 SINGLE_VALUE_TYPE(switches::kEnableCloudPrintXps) 1600 SINGLE_VALUE_TYPE(switches::kEnableCloudPrintXps,
1601 UMA_HISTOGRAM_ID_kEnableCloudPrintXps)
1384 }, 1602 },
1385 #endif 1603 #endif
1386 #if defined(OS_MACOSX) 1604 #if defined(OS_MACOSX)
1387 { 1605 {
1388 "enable-simplified-fullscreen", 1606 "enable-simplified-fullscreen",
1389 IDS_FLAGS_ENABLE_SIMPLIFIED_FULLSCREEN_NAME, 1607 IDS_FLAGS_ENABLE_SIMPLIFIED_FULLSCREEN_NAME,
1390 IDS_FLAGS_ENABLE_SIMPLIFIED_FULLSCREEN_DESCRIPTION, 1608 IDS_FLAGS_ENABLE_SIMPLIFIED_FULLSCREEN_DESCRIPTION,
1391 kOsMac, 1609 kOsMac,
1392 SINGLE_VALUE_TYPE(switches::kEnableSimplifiedFullscreen) 1610 SINGLE_VALUE_TYPE(switches::kEnableSimplifiedFullscreen,
1611 UMA_HISTOGRAM_ID_kEnableSimplifiedFullscreen)
1393 }, 1612 },
1394 #endif 1613 #endif
1395 #if defined(USE_AURA) 1614 #if defined(USE_AURA)
1396 { 1615 {
1397 "tab-capture-upscale-quality", 1616 "tab-capture-upscale-quality",
1398 IDS_FLAGS_TAB_CAPTURE_UPSCALE_QUALITY_NAME, 1617 IDS_FLAGS_TAB_CAPTURE_UPSCALE_QUALITY_NAME,
1399 IDS_FLAGS_TAB_CAPTURE_UPSCALE_QUALITY_DESCRIPTION, 1618 IDS_FLAGS_TAB_CAPTURE_UPSCALE_QUALITY_DESCRIPTION,
1400 kOsAll, 1619 kOsAll,
1401 MULTI_VALUE_TYPE(kTabCaptureUpscaleQualityChoices) 1620 MULTI_VALUE_TYPE(kTabCaptureUpscaleQualityChoices)
1402 }, 1621 },
1403 { 1622 {
1404 "tab-capture-downscale-quality", 1623 "tab-capture-downscale-quality",
1405 IDS_FLAGS_TAB_CAPTURE_DOWNSCALE_QUALITY_NAME, 1624 IDS_FLAGS_TAB_CAPTURE_DOWNSCALE_QUALITY_NAME,
1406 IDS_FLAGS_TAB_CAPTURE_DOWNSCALE_QUALITY_DESCRIPTION, 1625 IDS_FLAGS_TAB_CAPTURE_DOWNSCALE_QUALITY_DESCRIPTION,
1407 kOsAll, 1626 kOsAll,
1408 MULTI_VALUE_TYPE(kTabCaptureDownscaleQualityChoices) 1627 MULTI_VALUE_TYPE(kTabCaptureDownscaleQualityChoices)
1409 }, 1628 },
1410 #endif 1629 #endif
1411 { 1630 {
1412 "enable-spelling-feedback-field-trial", 1631 "enable-spelling-feedback-field-trial",
1413 IDS_FLAGS_ENABLE_SPELLING_FEEDBACK_FIELD_TRIAL_NAME, 1632 IDS_FLAGS_ENABLE_SPELLING_FEEDBACK_FIELD_TRIAL_NAME,
1414 IDS_FLAGS_ENABLE_SPELLING_FEEDBACK_FIELD_TRIAL_DESCRIPTION, 1633 IDS_FLAGS_ENABLE_SPELLING_FEEDBACK_FIELD_TRIAL_DESCRIPTION,
1415 kOsAll, 1634 kOsAll,
1416 SINGLE_VALUE_TYPE(switches::kEnableSpellingFeedbackFieldTrial) 1635 SINGLE_VALUE_TYPE(switches::kEnableSpellingFeedbackFieldTrial,
1636 UMA_HISTOGRAM_ID_kEnableSpellingFeedbackFieldTrial)
1417 }, 1637 },
1418 { 1638 {
1419 "enable-webgl-draft-extensions", 1639 "enable-webgl-draft-extensions",
1420 IDS_FLAGS_ENABLE_WEBGL_DRAFT_EXTENSIONS_NAME, 1640 IDS_FLAGS_ENABLE_WEBGL_DRAFT_EXTENSIONS_NAME,
1421 IDS_FLAGS_ENABLE_WEBGL_DRAFT_EXTENSIONS_DESCRIPTION, 1641 IDS_FLAGS_ENABLE_WEBGL_DRAFT_EXTENSIONS_DESCRIPTION,
1422 kOsAll, 1642 kOsAll,
1423 SINGLE_VALUE_TYPE(switches::kEnableWebGLDraftExtensions) 1643 SINGLE_VALUE_TYPE(switches::kEnableWebGLDraftExtensions,
1644 UMA_HISTOGRAM_ID_kEnableWebGLDraftExtensions)
1424 }, 1645 },
1425 { 1646 {
1426 "enable-web-midi", 1647 "enable-web-midi",
1427 IDS_FLAGS_ENABLE_WEB_MIDI_NAME, 1648 IDS_FLAGS_ENABLE_WEB_MIDI_NAME,
1428 IDS_FLAGS_ENABLE_WEB_MIDI_DESCRIPTION, 1649 IDS_FLAGS_ENABLE_WEB_MIDI_DESCRIPTION,
1429 kOsMac | kOsWin | kOsLinux | kOsCrOS | kOsAndroid, 1650 kOsMac | kOsWin | kOsLinux | kOsCrOS | kOsAndroid,
1430 SINGLE_VALUE_TYPE(switches::kEnableWebMIDI) 1651 SINGLE_VALUE_TYPE(switches::kEnableWebMIDI,
1652 UMA_HISTOGRAM_ID_kEnableWebMIDI)
1431 }, 1653 },
1432 { 1654 {
1433 "enable-new-profile-management", 1655 "enable-new-profile-management",
1434 IDS_FLAGS_ENABLE_NEW_PROFILE_MANAGEMENT_NAME, 1656 IDS_FLAGS_ENABLE_NEW_PROFILE_MANAGEMENT_NAME,
1435 IDS_FLAGS_ENABLE_NEW_PROFILE_MANAGEMENT_DESCRIPTION, 1657 IDS_FLAGS_ENABLE_NEW_PROFILE_MANAGEMENT_DESCRIPTION,
1436 kOsAndroid | kOsMac | kOsWin | kOsLinux | kOsCrOS, 1658 kOsAndroid | kOsMac | kOsWin | kOsLinux | kOsCrOS,
1437 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableNewProfileManagement, 1659 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableNewProfileManagement,
1438 switches::kDisableNewProfileManagement) 1660 UMA_HISTOGRAM_ID_kEnableNewProfileManagement,
1661 switches::kDisableNewProfileManagement,
1662 UMA_HISTOGRAM_ID_kDisableNewProfileManagement)
1439 }, 1663 },
1440 { 1664 {
1441 "enable-account-consistency", 1665 "enable-account-consistency",
1442 IDS_FLAGS_ENABLE_ACCOUNT_CONSISTENCY_NAME, 1666 IDS_FLAGS_ENABLE_ACCOUNT_CONSISTENCY_NAME,
1443 IDS_FLAGS_ENABLE_ACCOUNT_CONSISTENCY_DESCRIPTION, 1667 IDS_FLAGS_ENABLE_ACCOUNT_CONSISTENCY_DESCRIPTION,
1444 kOsAndroid | kOsMac | kOsWin | kOsLinux | kOsCrOS, 1668 kOsAndroid | kOsMac | kOsWin | kOsLinux | kOsCrOS,
1445 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableAccountConsistency, 1669 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableAccountConsistency,
1446 switches::kDisableAccountConsistency) 1670 UMA_HISTOGRAM_ID_kEnableAccountConsistency,
1671 switches::kDisableAccountConsistency,
1672 UMA_HISTOGRAM_ID_kDisableAccountConsistency)
1447 }, 1673 },
1448 { 1674 {
1449 "enable-fast-user-switching", 1675 "enable-fast-user-switching",
1450 IDS_FLAGS_ENABLE_FAST_USER_SWITCHING_NAME, 1676 IDS_FLAGS_ENABLE_FAST_USER_SWITCHING_NAME,
1451 IDS_FLAGS_ENABLE_FAST_USER_SWITCHING_DESCRIPTION, 1677 IDS_FLAGS_ENABLE_FAST_USER_SWITCHING_DESCRIPTION,
1452 kOsMac | kOsWin | kOsLinux, 1678 kOsMac | kOsWin | kOsLinux,
1453 SINGLE_VALUE_TYPE(switches::kFastUserSwitching) 1679 SINGLE_VALUE_TYPE(switches::kFastUserSwitching,
1680 UMA_HISTOGRAM_ID_kFastUserSwitching)
1454 }, 1681 },
1455 { 1682 {
1456 "enable-new-avatar-menu", 1683 "enable-new-avatar-menu",
1457 IDS_FLAGS_ENABLE_NEW_AVATAR_MENU_NAME, 1684 IDS_FLAGS_ENABLE_NEW_AVATAR_MENU_NAME,
1458 IDS_FLAGS_ENABLE_NEW_AVATAR_MENU_DESCRIPTION, 1685 IDS_FLAGS_ENABLE_NEW_AVATAR_MENU_DESCRIPTION,
1459 kOsMac | kOsWin | kOsLinux, 1686 kOsMac | kOsWin | kOsLinux,
1460 SINGLE_VALUE_TYPE(switches::kNewAvatarMenu) 1687 SINGLE_VALUE_TYPE(switches::kNewAvatarMenu,
1688 UMA_HISTOGRAM_ID_kNewAvatarMenu)
1461 }, 1689 },
1462 { 1690 {
1463 "enable-web-based-signin", 1691 "enable-web-based-signin",
1464 IDS_FLAGS_ENABLE_WEB_BASED_SIGNIN_NAME, 1692 IDS_FLAGS_ENABLE_WEB_BASED_SIGNIN_NAME,
1465 IDS_FLAGS_ENABLE_WEB_BASED_SIGNIN_DESCRIPTION, 1693 IDS_FLAGS_ENABLE_WEB_BASED_SIGNIN_DESCRIPTION,
1466 kOsMac | kOsWin | kOsLinux, 1694 kOsMac | kOsWin | kOsLinux,
1467 SINGLE_VALUE_TYPE(switches::kEnableWebBasedSignin) 1695 SINGLE_VALUE_TYPE(switches::kEnableWebBasedSignin,
1696 UMA_HISTOGRAM_ID_kEnableWebBasedSignin)
1468 }, 1697 },
1469 { 1698 {
1470 "enable-google-profile-info", 1699 "enable-google-profile-info",
1471 IDS_FLAGS_ENABLE_GOOGLE_PROFILE_INFO_NAME, 1700 IDS_FLAGS_ENABLE_GOOGLE_PROFILE_INFO_NAME,
1472 IDS_FLAGS_ENABLE_GOOGLE_PROFILE_INFO_DESCRIPTION, 1701 IDS_FLAGS_ENABLE_GOOGLE_PROFILE_INFO_DESCRIPTION,
1473 kOsMac | kOsWin | kOsLinux, 1702 kOsMac | kOsWin | kOsLinux,
1474 SINGLE_VALUE_TYPE(switches::kGoogleProfileInfo) 1703 SINGLE_VALUE_TYPE(switches::kGoogleProfileInfo,
1704 UMA_HISTOGRAM_ID_kGoogleProfileInfo)
1475 }, 1705 },
1476 { 1706 {
1477 "reset-app-list-install-state", 1707 "reset-app-list-install-state",
1478 IDS_FLAGS_RESET_APP_LIST_INSTALL_STATE_NAME, 1708 IDS_FLAGS_RESET_APP_LIST_INSTALL_STATE_NAME,
1479 IDS_FLAGS_RESET_APP_LIST_INSTALL_STATE_DESCRIPTION, 1709 IDS_FLAGS_RESET_APP_LIST_INSTALL_STATE_DESCRIPTION,
1480 kOsMac | kOsWin | kOsLinux, 1710 kOsMac | kOsWin | kOsLinux,
1481 SINGLE_VALUE_TYPE(switches::kResetAppListInstallState) 1711 SINGLE_VALUE_TYPE(switches::kResetAppListInstallState,
1712 UMA_HISTOGRAM_ID_kResetAppListInstallState)
1482 }, 1713 },
1483 #if defined(ENABLE_APP_LIST) 1714 #if defined(ENABLE_APP_LIST)
1484 #if defined(OS_LINUX) 1715 #if defined(OS_LINUX)
1485 { 1716 { // This is compiled out on non-Linux platforms because otherwise it would
1486 // This is compiled out on non-Linux platforms because otherwise it would be 1717 // be
1487 // visible on Win/Mac/CrOS but not on Linux GTK, which would be confusing. 1718 // visible on Win/Mac/CrOS but not on Linux GTK, which would be confusing.
1488 // TODO(mgiuca): Remove the #if when Aura is the default on Linux. 1719 // TODO(mgiuca): Remove the #if when Aura is the default on Linux.
1489 "enable-app-list", 1720 "enable-app-list",
1490 IDS_FLAGS_ENABLE_APP_LIST_NAME, 1721 IDS_FLAGS_ENABLE_APP_LIST_NAME,
1491 IDS_FLAGS_ENABLE_APP_LIST_DESCRIPTION, 1722 IDS_FLAGS_ENABLE_APP_LIST_DESCRIPTION,
1492 kOsLinux, 1723 kOsLinux,
1493 SINGLE_VALUE_TYPE(switches::kEnableAppList) 1724 SINGLE_VALUE_TYPE(switches::kEnableAppList,
1725 UMA_HISTOGRAM_ID_kEnableAppList)
1494 }, 1726 },
1495 #endif 1727 #endif
1496 { 1728 {
1497 "disable-app-list-app-info", 1729 "disable-app-list-app-info",
1498 IDS_FLAGS_DISABLE_APP_INFO_IN_APP_LIST, 1730 IDS_FLAGS_DISABLE_APP_INFO_IN_APP_LIST,
1499 IDS_FLAGS_DISABLE_APP_INFO_IN_APP_LIST_DESCRIPTION, 1731 IDS_FLAGS_DISABLE_APP_INFO_IN_APP_LIST_DESCRIPTION,
1500 kOsLinux | kOsWin | kOsCrOS, 1732 kOsLinux | kOsWin | kOsCrOS,
1501 SINGLE_VALUE_TYPE(app_list::switches::kDisableAppInfo) 1733 SINGLE_VALUE_TYPE(app_list::switches::kDisableAppInfo,
1734 UMA_HISTOGRAM_ID_kDisableAppInfo)
1502 }, 1735 },
1503 { 1736 {
1504 "disable-app-list-voice-search", 1737 "disable-app-list-voice-search",
1505 IDS_FLAGS_DISABLE_APP_LIST_VOICE_SEARCH, 1738 IDS_FLAGS_DISABLE_APP_LIST_VOICE_SEARCH,
1506 IDS_FLAGS_DISABLE_APP_LIST_VOICE_SEARCH_DESCRIPTION, 1739 IDS_FLAGS_DISABLE_APP_LIST_VOICE_SEARCH_DESCRIPTION,
1507 kOsCrOS, 1740 kOsCrOS,
1508 SINGLE_VALUE_TYPE(app_list::switches::kDisableVoiceSearch) 1741 SINGLE_VALUE_TYPE(app_list::switches::kDisableVoiceSearch,
1742 UMA_HISTOGRAM_ID_kDisableVoiceSearch)
1509 }, 1743 },
1510 #endif 1744 #endif
1511 #if defined(OS_ANDROID) 1745 #if defined(OS_ANDROID)
1512 { 1746 {
1513 "enable-accessibility-tab-switcher", 1747 "enable-accessibility-tab-switcher",
1514 IDS_FLAGS_ENABLE_ACCESSIBILITY_TAB_SWITCHER_NAME, 1748 IDS_FLAGS_ENABLE_ACCESSIBILITY_TAB_SWITCHER_NAME,
1515 IDS_FLAGS_ENABLE_ACCESSIBILITY_TAB_SWITCHER_DESCRIPTION, 1749 IDS_FLAGS_ENABLE_ACCESSIBILITY_TAB_SWITCHER_DESCRIPTION,
1516 kOsAndroid, 1750 kOsAndroid,
1517 SINGLE_VALUE_TYPE(switches::kEnableAccessibilityTabSwitcher) 1751 SINGLE_VALUE_TYPE(switches::kEnableAccessibilityTabSwitcher,
1518 }, 1752 UMA_HISTOGRAM_ID_kEnableAccessibilityTabSwitcher)
1519 {
1520 // TODO(dmazzoni): remove this flag when native android accessibility
1521 // ships in the stable channel. http://crbug.com/356775
1522 "enable-accessibility-script-injection",
1523 IDS_FLAGS_ENABLE_ACCESSIBILITY_SCRIPT_INJECTION_NAME,
1524 IDS_FLAGS_ENABLE_ACCESSIBILITY_SCRIPT_INJECTION_DESCRIPTION,
1525 kOsAndroid,
1526 // Java-only switch: ContentSwitches.ENABLE_ACCESSIBILITY_SCRIPT_INJECTION.
1527 SINGLE_VALUE_TYPE("enable-accessibility-script-injection")
1528 }, 1753 },
1529 #endif 1754 #endif
1530 { 1755 {
1531 "enable-one-copy", 1756 "enable-one-copy",
1532 IDS_FLAGS_ONE_COPY_NAME, 1757 IDS_FLAGS_ONE_COPY_NAME,
1533 IDS_FLAGS_ONE_COPY_DESCRIPTION, 1758 IDS_FLAGS_ONE_COPY_DESCRIPTION,
1534 kOsAll, 1759 kOsAll,
1535 SINGLE_VALUE_TYPE(switches::kEnableOneCopy) 1760 SINGLE_VALUE_TYPE(switches::kEnableOneCopy,
1761 UMA_HISTOGRAM_ID_kEnableOneCopy)
1536 }, 1762 },
1537 { 1763 {
1538 "enable-zero-copy", 1764 "enable-zero-copy",
1539 IDS_FLAGS_ZERO_COPY_NAME, 1765 IDS_FLAGS_ZERO_COPY_NAME,
1540 IDS_FLAGS_ZERO_COPY_DESCRIPTION, 1766 IDS_FLAGS_ZERO_COPY_DESCRIPTION,
1541 kOsAll, 1767 kOsAll,
1542 MULTI_VALUE_TYPE(kZeroCopyChoices) 1768 MULTI_VALUE_TYPE(kZeroCopyChoices)
1543 }, 1769 },
1544 #if defined(OS_CHROMEOS) 1770 #if defined(OS_CHROMEOS)
1545 { 1771 {
1546 "enable-first-run-ui-transitions", 1772 "enable-first-run-ui-transitions",
1547 IDS_FLAGS_ENABLE_FIRST_RUN_UI_TRANSITIONS_NAME, 1773 IDS_FLAGS_ENABLE_FIRST_RUN_UI_TRANSITIONS_NAME,
1548 IDS_FLAGS_ENABLE_FIRST_RUN_UI_TRANSITIONS_DESCRIPTION, 1774 IDS_FLAGS_ENABLE_FIRST_RUN_UI_TRANSITIONS_DESCRIPTION,
1549 kOsCrOS, 1775 kOsCrOS,
1550 SINGLE_VALUE_TYPE(chromeos::switches::kEnableFirstRunUITransitions) 1776 SINGLE_VALUE_TYPE(chromeos::switches::kEnableFirstRunUITransitions,
1777 UMA_HISTOGRAM_ID_kEnableFirstRunUITransitions)
1551 }, 1778 },
1552 #endif 1779 #endif
1553 { 1780 {
1554 "disable-compositor-touch-hit-testing", 1781 "disable-compositor-touch-hit-testing",
1555 IDS_FLAGS_DISABLE_COMPOSITOR_TOUCH_HIT_TESTING_NAME, 1782 IDS_FLAGS_DISABLE_COMPOSITOR_TOUCH_HIT_TESTING_NAME,
1556 IDS_FLAGS_DISABLE_COMPOSITOR_TOUCH_HIT_TESTING_DESCRIPTION, 1783 IDS_FLAGS_DISABLE_COMPOSITOR_TOUCH_HIT_TESTING_DESCRIPTION,
1557 kOsAll, 1784 kOsAll,
1558 SINGLE_VALUE_TYPE(cc::switches::kDisableCompositorTouchHitTesting), 1785 SINGLE_VALUE_TYPE(cc::switches::kDisableCompositorTouchHitTesting,
1786 UMA_HISTOGRAM_ID_kDisableCompositorTouchHitTesting)
1559 }, 1787 },
1560 { 1788 {
1561 "enable-streamlined-hosted-apps", 1789 "enable-streamlined-hosted-apps",
1562 IDS_FLAGS_ENABLE_STREAMLINED_HOSTED_APPS_NAME, 1790 IDS_FLAGS_ENABLE_STREAMLINED_HOSTED_APPS_NAME,
1563 IDS_FLAGS_ENABLE_STREAMLINED_HOSTED_APPS_DESCRIPTION, 1791 IDS_FLAGS_ENABLE_STREAMLINED_HOSTED_APPS_DESCRIPTION,
1564 kOsWin | kOsCrOS | kOsLinux, 1792 kOsWin | kOsCrOS | kOsLinux,
1565 SINGLE_VALUE_TYPE(switches::kEnableStreamlinedHostedApps) 1793 SINGLE_VALUE_TYPE(switches::kEnableStreamlinedHostedApps,
1794 UMA_HISTOGRAM_ID_kEnableStreamlinedHostedApps)
1566 }, 1795 },
1567 { 1796 {
1568 "enable-prominent-url-app-flow", 1797 "enable-prominent-url-app-flow",
1569 IDS_FLAGS_ENABLE_PROMINENT_URL_APP_FLOW_NAME, 1798 IDS_FLAGS_ENABLE_PROMINENT_URL_APP_FLOW_NAME,
1570 IDS_FLAGS_ENABLE_PROMINENT_URL_APP_FLOW_DESCRIPTION, 1799 IDS_FLAGS_ENABLE_PROMINENT_URL_APP_FLOW_DESCRIPTION,
1571 kOsWin | kOsCrOS | kOsLinux, 1800 kOsWin | kOsCrOS | kOsLinux,
1572 SINGLE_VALUE_TYPE(switches::kEnableProminentURLAppFlow) 1801 SINGLE_VALUE_TYPE(switches::kEnableProminentURLAppFlow,
1802 UMA_HISTOGRAM_ID_kEnableProminentURLAppFlow)
1573 }, 1803 },
1574 { 1804 {
1575 "enable-ephemeral-apps", 1805 "enable-ephemeral-apps",
1576 IDS_FLAGS_ENABLE_EPHEMERAL_APPS_NAME, 1806 IDS_FLAGS_ENABLE_EPHEMERAL_APPS_NAME,
1577 IDS_FLAGS_ENABLE_EPHEMERAL_APPS_DESCRIPTION, 1807 IDS_FLAGS_ENABLE_EPHEMERAL_APPS_DESCRIPTION,
1578 kOsAll, 1808 kOsAll,
1579 SINGLE_VALUE_TYPE(switches::kEnableEphemeralApps) 1809 SINGLE_VALUE_TYPE(switches::kEnableEphemeralApps,
1810 UMA_HISTOGRAM_ID_kEnableEphemeralApps)
1580 }, 1811 },
1581 { 1812 {
1582 "enable-linkable-ephemeral-apps", 1813 "enable-linkable-ephemeral-apps",
1583 IDS_FLAGS_ENABLE_LINKABLE_EPHEMERAL_APPS_NAME, 1814 IDS_FLAGS_ENABLE_LINKABLE_EPHEMERAL_APPS_NAME,
1584 IDS_FLAGS_ENABLE_LINKABLE_EPHEMERAL_APPS_DESCRIPTION, 1815 IDS_FLAGS_ENABLE_LINKABLE_EPHEMERAL_APPS_DESCRIPTION,
1585 kOsAll, 1816 kOsAll,
1586 SINGLE_VALUE_TYPE(switches::kEnableLinkableEphemeralApps) 1817 SINGLE_VALUE_TYPE(switches::kEnableLinkableEphemeralApps,
1818 UMA_HISTOGRAM_ID_kEnableLinkableEphemeralApps)
1587 }, 1819 },
1588 { 1820 {
1589 "enable-service-worker", 1821 "enable-service-worker",
1590 IDS_FLAGS_ENABLE_SERVICE_WORKER_NAME, 1822 IDS_FLAGS_ENABLE_SERVICE_WORKER_NAME,
1591 IDS_FLAGS_ENABLE_SERVICE_WORKER_DESCRIPTION, 1823 IDS_FLAGS_ENABLE_SERVICE_WORKER_DESCRIPTION,
1592 kOsAll, 1824 kOsAll,
1593 SINGLE_VALUE_TYPE(switches::kEnableServiceWorker) 1825 SINGLE_VALUE_TYPE(switches::kEnableServiceWorker,
1826 UMA_HISTOGRAM_ID_kEnableServiceWorker)
1594 }, 1827 },
1595 { 1828 {
1596 "enable-service-worker-sync", 1829 "enable-service-worker-sync",
1597 IDS_FLAGS_ENABLE_SERVICE_WORKER_SYNC_NAME, 1830 IDS_FLAGS_ENABLE_SERVICE_WORKER_SYNC_NAME,
1598 IDS_FLAGS_ENABLE_SERVICE_WORKER_SYNC_DESCRIPTION, 1831 IDS_FLAGS_ENABLE_SERVICE_WORKER_SYNC_DESCRIPTION,
1599 kOsAll, 1832 kOsAll,
1600 SINGLE_VALUE_TYPE(switches::kEnableServiceWorkerSync) 1833 SINGLE_VALUE_TYPE(switches::kEnableServiceWorkerSync,
1834 UMA_HISTOGRAM_ID_kEnableServiceWorkerSync)
1601 }, 1835 },
1602 #if defined(OS_ANDROID) 1836 #if defined(OS_ANDROID)
1603 { 1837 {
1604 "disable-click-delay", 1838 "disable-click-delay",
1605 IDS_FLAGS_DISABLE_CLICK_DELAY_NAME, 1839 IDS_FLAGS_DISABLE_CLICK_DELAY_NAME,
1606 IDS_FLAGS_DISABLE_CLICK_DELAY_DESCRIPTION, 1840 IDS_FLAGS_DISABLE_CLICK_DELAY_DESCRIPTION,
1607 kOsAndroid, 1841 kOsAndroid,
1608 // Java-only switch: CommandLine.DISABLE_CLICK_DELAY 1842 // Java-only switch: CommandLine.DISABLE_CLICK_DELAY
1609 SINGLE_VALUE_TYPE("disable-click-delay") 1843 SINGLE_VALUE_TYPE(switches::kDisableClickDelay,
1844 UMA_HISTOGRAM_ID_kDisableClickDelay)
1610 }, 1845 },
1611 #endif 1846 #endif
1612 #if defined(OS_MACOSX) 1847 #if defined(OS_MACOSX)
1613 { 1848 {
1614 "enable-translate-new-ux", 1849 "enable-translate-new-ux",
1615 IDS_FLAGS_ENABLE_TRANSLATE_NEW_UX_NAME, 1850 IDS_FLAGS_ENABLE_TRANSLATE_NEW_UX_NAME,
1616 IDS_FLAGS_ENABLE_TRANSLATE_NEW_UX_DESCRIPTION, 1851 IDS_FLAGS_ENABLE_TRANSLATE_NEW_UX_DESCRIPTION,
1617 kOsMac, 1852 kOsMac,
1618 SINGLE_VALUE_TYPE(switches::kEnableTranslateNewUX) 1853 SINGLE_VALUE_TYPE(switches::kEnableTranslateNewUX,
1854 UMA_HISTOGRAM_ID_kEnableTranslateNewUX)
1619 }, 1855 },
1620 #endif 1856 #endif
1621 #if defined(TOOLKIT_VIEWS) 1857 #if defined(TOOLKIT_VIEWS)
1622 { 1858 {
1623 "disable-views-rect-based-targeting", // FLAGS:RECORD_UMA 1859 "disable-views-rect-based-targeting", // FLAGS:RECORD_UMA
1624 IDS_FLAGS_DISABLE_VIEWS_RECT_BASED_TARGETING_NAME, 1860 IDS_FLAGS_DISABLE_VIEWS_RECT_BASED_TARGETING_NAME,
1625 IDS_FLAGS_DISABLE_VIEWS_RECT_BASED_TARGETING_DESCRIPTION, 1861 IDS_FLAGS_DISABLE_VIEWS_RECT_BASED_TARGETING_DESCRIPTION,
1626 kOsCrOS | kOsWin, 1862 kOsCrOS | kOsWin,
1627 SINGLE_VALUE_TYPE(views::switches::kDisableViewsRectBasedTargeting) 1863 SINGLE_VALUE_TYPE(views::switches::kDisableViewsRectBasedTargeting,
1864 UMA_HISTOGRAM_ID_kDisableViewsRectBasedTargeting)
1628 }, 1865 },
1629 #endif 1866 #endif
1630 { 1867 {
1631 "enable-apps-show-on-first-paint", 1868 "enable-apps-show-on-first-paint",
1632 IDS_FLAGS_ENABLE_APPS_SHOW_ON_FIRST_PAINT_NAME, 1869 IDS_FLAGS_ENABLE_APPS_SHOW_ON_FIRST_PAINT_NAME,
1633 IDS_FLAGS_ENABLE_APPS_SHOW_ON_FIRST_PAINT_DESCRIPTION, 1870 IDS_FLAGS_ENABLE_APPS_SHOW_ON_FIRST_PAINT_DESCRIPTION,
1634 kOsDesktop, 1871 kOsDesktop,
1635 SINGLE_VALUE_TYPE(switches::kEnableAppsShowOnFirstPaint) 1872 SINGLE_VALUE_TYPE(switches::kEnableAppsShowOnFirstPaint,
1873 UMA_HISTOGRAM_ID_kEnableAppsShowOnFirstPaint)
1636 }, 1874 },
1637 { 1875 {
1638 "enhanced-bookmarks-experiment", 1876 "enhanced-bookmarks-experiment",
1639 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_NAME, 1877 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_NAME,
1640 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_DESCRIPTION, 1878 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_DESCRIPTION,
1641 kOsDesktop, 1879 kOsDesktop,
1642 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE( 1880 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
1643 switches::kEnhancedBookmarksExperiment, "1", 1881 switches::kEnhancedBookmarksExperiment, "1",
1644 switches::kEnhancedBookmarksExperiment, "0") 1882 UMA_HISTOGRAM_ID_kEnhancedBookmarksExperiment,
1883 switches::kEnhancedBookmarksExperiment, "0",
1884 UMA_HISTOGRAM_ID_kEnhancedBookmarksExperiment)
1645 }, 1885 },
1646 { 1886 {
1647 "manual-enhanced-bookmarks", 1887 "manual-enhanced-bookmarks",
1648 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_NAME, 1888 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_NAME,
1649 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_DESCRIPTION, 1889 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_DESCRIPTION,
1650 kOsDesktop, 1890 kOsDesktop,
1651 SINGLE_VALUE_TYPE(switches::kManualEnhancedBookmarks) 1891 SINGLE_VALUE_TYPE(switches::kManualEnhancedBookmarks,
1892 UMA_HISTOGRAM_ID_kManualEnhancedBookmarks)
1652 }, 1893 },
1653 { 1894 {
1654 "manual-enhanced-bookmarks-optout", 1895 "manual-enhanced-bookmarks-optout",
1655 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_NAME, 1896 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_NAME,
1656 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_DESCRIPTION, 1897 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_DESCRIPTION,
1657 kOsDesktop, 1898 kOsDesktop,
1658 SINGLE_VALUE_TYPE(switches::kManualEnhancedBookmarksOptout) 1899 SINGLE_VALUE_TYPE(switches::kManualEnhancedBookmarksOptout,
1900 UMA_HISTOGRAM_ID_kManualEnhancedBookmarksOptout)
1659 }, 1901 },
1660 #if defined(OS_ANDROID) 1902 #if defined(OS_ANDROID)
1661 { 1903 {
1662 "enable-zero-suggest-experiment", 1904 "enable-zero-suggest-experiment",
1663 IDS_FLAGS_ZERO_SUGGEST_EXPERIMENT_NAME, 1905 IDS_FLAGS_ZERO_SUGGEST_EXPERIMENT_NAME,
1664 IDS_FLAGS_ZERO_SUGGEST_EXPERIMENT_DESCRIPTION, 1906 IDS_FLAGS_ZERO_SUGGEST_EXPERIMENT_DESCRIPTION,
1665 kOsAndroid, 1907 kOsAndroid,
1666 MULTI_VALUE_TYPE(kZeroSuggestExperimentsChoices) 1908 MULTI_VALUE_TYPE(kZeroSuggestExperimentsChoices)
1667 }, 1909 },
1668 #endif 1910 #endif
(...skipping 16 matching lines...) Expand all
1685 IDS_FLAGS_SEARCH_BUTTON_IN_OMNIBOX_NAME, 1927 IDS_FLAGS_SEARCH_BUTTON_IN_OMNIBOX_NAME,
1686 IDS_FLAGS_SEARCH_BUTTON_IN_OMNIBOX_DESCRIPTION, 1928 IDS_FLAGS_SEARCH_BUTTON_IN_OMNIBOX_DESCRIPTION,
1687 kOsCrOS | kOsMac | kOsWin | kOsLinux, 1929 kOsCrOS | kOsMac | kOsWin | kOsLinux,
1688 MULTI_VALUE_TYPE(kSearchButtonInOmniboxChoices) 1930 MULTI_VALUE_TYPE(kSearchButtonInOmniboxChoices)
1689 }, 1931 },
1690 { 1932 {
1691 "disable-ignore-autocomplete-off", 1933 "disable-ignore-autocomplete-off",
1692 IDS_FLAGS_DISABLE_IGNORE_AUTOCOMPLETE_OFF_NAME, 1934 IDS_FLAGS_DISABLE_IGNORE_AUTOCOMPLETE_OFF_NAME,
1693 IDS_FLAGS_DISABLE_IGNORE_AUTOCOMPLETE_OFF_DESCRIPTION, 1935 IDS_FLAGS_DISABLE_IGNORE_AUTOCOMPLETE_OFF_DESCRIPTION,
1694 kOsAll, 1936 kOsAll,
1695 SINGLE_VALUE_TYPE(autofill::switches::kDisableIgnoreAutocompleteOff) 1937 SINGLE_VALUE_TYPE(autofill::switches::kDisableIgnoreAutocompleteOff,
1938 UMA_HISTOGRAM_ID_kDisableIgnoreAutocompleteOff)
1696 }, 1939 },
1697 { 1940 {
1698 "enable-permissions-bubbles", 1941 "enable-permissions-bubbles",
1699 IDS_FLAGS_ENABLE_PERMISSIONS_BUBBLES_NAME, 1942 IDS_FLAGS_ENABLE_PERMISSIONS_BUBBLES_NAME,
1700 IDS_FLAGS_ENABLE_PERMISSIONS_BUBBLES_DESCRIPTION, 1943 IDS_FLAGS_ENABLE_PERMISSIONS_BUBBLES_DESCRIPTION,
1701 kOsAll, 1944 kOsAll,
1702 ENABLE_DISABLE_VALUE_TYPE(switches::kEnablePermissionsBubbles, 1945 ENABLE_DISABLE_VALUE_TYPE(switches::kEnablePermissionsBubbles,
1703 switches::kDisablePermissionsBubbles) 1946 UMA_HISTOGRAM_ID_kEnablePermissionsBubbles,
1947 switches::kDisablePermissionsBubbles,
1948 UMA_HISTOGRAM_ID_kDisablePermissionsBubbles)
1704 }, 1949 },
1705 { 1950 {
1706 "enable-session-crashed-bubble", 1951 "enable-session-crashed-bubble",
1707 IDS_FLAGS_ENABLE_SESSION_CRASHED_BUBBLE_NAME, 1952 IDS_FLAGS_ENABLE_SESSION_CRASHED_BUBBLE_NAME,
1708 IDS_FLAGS_ENABLE_SESSION_CRASHED_BUBBLE_DESCRIPTION, 1953 IDS_FLAGS_ENABLE_SESSION_CRASHED_BUBBLE_DESCRIPTION,
1709 kOsWin | kOsLinux, 1954 kOsWin | kOsLinux,
1710 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSessionCrashedBubble, 1955 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSessionCrashedBubble,
1711 switches::kDisableSessionCrashedBubble) 1956 UMA_HISTOGRAM_ID_kEnableSessionCrashedBubble,
1957 switches::kDisableSessionCrashedBubble,
1958 UMA_HISTOGRAM_ID_kDisableSessionCrashedBubble)
1712 }, 1959 },
1713 { 1960 {
1714 "out-of-process-pdf", 1961 "out-of-process-pdf",
1715 IDS_FLAGS_OUT_OF_PROCESS_PDF_NAME, 1962 IDS_FLAGS_OUT_OF_PROCESS_PDF_NAME,
1716 IDS_FLAGS_OUT_OF_PROCESS_PDF_DESCRIPTION, 1963 IDS_FLAGS_OUT_OF_PROCESS_PDF_DESCRIPTION,
1717 kOsDesktop, 1964 kOsDesktop,
1718 SINGLE_VALUE_TYPE(switches::kOutOfProcessPdf) 1965 SINGLE_VALUE_TYPE(switches::kOutOfProcessPdf,
1966 UMA_HISTOGRAM_ID_kOutOfProcessPdf)
1719 }, 1967 },
1720 #if defined(OS_ANDROID) 1968 #if defined(OS_ANDROID)
1721 { 1969 {
1722 "enable-fast-text-autosizing", 1970 "enable-fast-text-autosizing",
1723 IDS_FLAGS_ENABLE_FAST_TEXT_AUTOSIZING_NAME, 1971 IDS_FLAGS_ENABLE_FAST_TEXT_AUTOSIZING_NAME,
1724 IDS_FLAGS_ENABLE_FAST_TEXT_AUTOSIZING_DESCRIPTION, 1972 IDS_FLAGS_ENABLE_FAST_TEXT_AUTOSIZING_DESCRIPTION,
1725 kOsAndroid, 1973 kOsAndroid,
1726 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableFastTextAutosizing, 1974 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableFastTextAutosizing,
1727 switches::kDisableFastTextAutosizing) 1975 UMA_HISTOGRAM_ID_kEnableFastTextAutosizing,
1976 switches::kDisableFastTextAutosizing,
1977 UMA_HISTOGRAM_ID_kDisableFastTextAutosizing)
1728 }, 1978 },
1729 { 1979 {
1730 "disable-cast", 1980 "disable-cast",
1731 IDS_FLAGS_DISABLE_CAST_NAME, 1981 IDS_FLAGS_DISABLE_CAST_NAME,
1732 IDS_FLAGS_DISABLE_CAST_DESCRIPTION, 1982 IDS_FLAGS_DISABLE_CAST_DESCRIPTION,
1733 kOsAndroid, 1983 kOsAndroid,
1734 SINGLE_VALUE_TYPE(switches::kDisableCast) 1984 SINGLE_VALUE_TYPE(switches::kDisableCast, UMA_HISTOGRAM_ID_kDisableCast)
1735 }, 1985 },
1736 { 1986 {
1737 "prefetch-search-results", 1987 "prefetch-search-results",
1738 IDS_FLAGS_PREFETCH_SEARCH_RESULTS_NAME, 1988 IDS_FLAGS_PREFETCH_SEARCH_RESULTS_NAME,
1739 IDS_FLAGS_PREFETCH_SEARCH_RESULTS_DESCRIPTION, 1989 IDS_FLAGS_PREFETCH_SEARCH_RESULTS_DESCRIPTION,
1740 kOsAndroid, 1990 kOsAndroid,
1741 SINGLE_VALUE_TYPE(switches::kPrefetchSearchResults) 1991 SINGLE_VALUE_TYPE(switches::kPrefetchSearchResults,
1992 UMA_HISTOGRAM_ID_kPrefetchSearchResults)
1742 }, 1993 },
1743 #endif 1994 #endif
1744 #if defined(ENABLE_APP_LIST) 1995 #if defined(ENABLE_APP_LIST)
1745 { 1996 {
1746 "enable-experimental-app-list", 1997 "enable-experimental-app-list",
1747 IDS_FLAGS_ENABLE_EXPERIMENTAL_APP_LIST_NAME, 1998 IDS_FLAGS_ENABLE_EXPERIMENTAL_APP_LIST_NAME,
1748 IDS_FLAGS_ENABLE_EXPERIMENTAL_APP_LIST_DESCRIPTION, 1999 IDS_FLAGS_ENABLE_EXPERIMENTAL_APP_LIST_DESCRIPTION,
1749 kOsWin | kOsLinux | kOsCrOS, 2000 kOsWin | kOsLinux | kOsCrOS,
1750 SINGLE_VALUE_TYPE(app_list::switches::kEnableExperimentalAppList) 2001 SINGLE_VALUE_TYPE(app_list::switches::kEnableExperimentalAppList,
2002 UMA_HISTOGRAM_ID_kEnableExperimentalAppList)
1751 }, 2003 },
1752 { 2004 {
1753 "enable-centered-app-list", 2005 "enable-centered-app-list",
1754 IDS_FLAGS_ENABLE_CENTERED_APP_LIST_NAME, 2006 IDS_FLAGS_ENABLE_CENTERED_APP_LIST_NAME,
1755 IDS_FLAGS_ENABLE_CENTERED_APP_LIST_DESCRIPTION, 2007 IDS_FLAGS_ENABLE_CENTERED_APP_LIST_DESCRIPTION,
1756 kOsWin | kOsLinux | kOsCrOS, 2008 kOsWin | kOsLinux | kOsCrOS,
1757 SINGLE_VALUE_TYPE(app_list::switches::kEnableCenteredAppList) 2009 SINGLE_VALUE_TYPE(app_list::switches::kEnableCenteredAppList,
2010 UMA_HISTOGRAM_ID_kEnableCenteredAppList)
1758 }, 2011 },
1759 #endif 2012 #endif
1760 { 2013 {
1761 "touch-scrolling-mode", 2014 "touch-scrolling-mode",
1762 IDS_FLAGS_TOUCH_SCROLLING_MODE_NAME, 2015 IDS_FLAGS_TOUCH_SCROLLING_MODE_NAME,
1763 IDS_FLAGS_TOUCH_SCROLLING_MODE_DESCRIPTION, 2016 IDS_FLAGS_TOUCH_SCROLLING_MODE_DESCRIPTION,
1764 kOsWin | kOsLinux | kOsCrOS | kOsAndroid, 2017 kOsWin | kOsLinux | kOsCrOS | kOsAndroid,
1765 MULTI_VALUE_TYPE(kTouchScrollingModeChoices) 2018 MULTI_VALUE_TYPE(kTouchScrollingModeChoices)
1766 }, 2019 },
1767 { 2020 {
1768 "bleeding-edge-renderer-mode", 2021 "bleeding-edge-renderer-mode",
1769 IDS_FLAGS_BLEEDING_RENDERER_NAME, 2022 IDS_FLAGS_BLEEDING_RENDERER_NAME,
1770 IDS_FLAGS_BLEEDING_RENDERER_DESCRIPTION, 2023 IDS_FLAGS_BLEEDING_RENDERER_DESCRIPTION,
1771 kOsAndroid, 2024 kOsAndroid,
1772 SINGLE_VALUE_TYPE(switches::kEnableBleedingEdgeRenderingFastPaths) 2025 SINGLE_VALUE_TYPE(switches::kEnableBleedingEdgeRenderingFastPaths,
2026 UMA_HISTOGRAM_ID_kEnableBleedingEdgeRenderingFastPaths)
1773 }, 2027 },
1774 { 2028 {
1775 "enable-settings-window", 2029 "enable-settings-window",
1776 IDS_FLAGS_ENABLE_SETTINGS_WINDOW_NAME, 2030 IDS_FLAGS_ENABLE_SETTINGS_WINDOW_NAME,
1777 IDS_FLAGS_ENABLE_SETTINGS_WINDOW_DESCRIPTION, 2031 IDS_FLAGS_ENABLE_SETTINGS_WINDOW_DESCRIPTION,
1778 kOsDesktop, 2032 kOsDesktop,
1779 MULTI_VALUE_TYPE(kEnableSettingsWindowChoices) 2033 MULTI_VALUE_TYPE(kEnableSettingsWindowChoices)
1780 }, 2034 },
1781 #if defined(OS_ANDROID) 2035 #if defined(OS_ANDROID)
1782 { 2036 {
1783 "enable-instant-search-clicks", 2037 "enable-instant-search-clicks",
1784 IDS_FLAGS_ENABLE_INSTANT_SEARCH_CLICKS_NAME, 2038 IDS_FLAGS_ENABLE_INSTANT_SEARCH_CLICKS_NAME,
1785 IDS_FLAGS_ENABLE_INSTANT_SEARCH_CLICKS_DESCRIPTION, 2039 IDS_FLAGS_ENABLE_INSTANT_SEARCH_CLICKS_DESCRIPTION,
1786 kOsAndroid, 2040 kOsAndroid,
1787 SINGLE_VALUE_TYPE(switches::kEnableInstantSearchClicks) 2041 SINGLE_VALUE_TYPE(switches::kEnableInstantSearchClicks,
2042 UMA_HISTOGRAM_ID_kEnableInstantSearchClicks)
1788 }, 2043 },
1789 #endif 2044 #endif
1790 { 2045 {
1791 "enable-save-password-bubble", 2046 "enable-save-password-bubble",
1792 IDS_FLAGS_ENABLE_SAVE_PASSWORD_BUBBLE_NAME, 2047 IDS_FLAGS_ENABLE_SAVE_PASSWORD_BUBBLE_NAME,
1793 IDS_FLAGS_ENABLE_SAVE_PASSWORD_BUBBLE_DESCRIPTION, 2048 IDS_FLAGS_ENABLE_SAVE_PASSWORD_BUBBLE_DESCRIPTION,
1794 kOsWin | kOsLinux | kOsCrOS, 2049 kOsWin | kOsLinux | kOsCrOS,
1795 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSavePasswordBubble, 2050 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSavePasswordBubble,
1796 switches::kDisableSavePasswordBubble) 2051 UMA_HISTOGRAM_ID_kEnableSavePasswordBubble,
2052 switches::kDisableSavePasswordBubble,
2053 UMA_HISTOGRAM_ID_kDisableSavePasswordBubble)
1797 }, 2054 },
1798 #if defined(GOOGLE_CHROME_BUILD) 2055 #if defined(GOOGLE_CHROME_BUILD)
1799 { 2056 {
1800 "enable-easy-unlock", 2057 "enable-easy-unlock",
1801 IDS_FLAGS_ENABLE_EASY_UNLOCK_NAME, 2058 IDS_FLAGS_ENABLE_EASY_UNLOCK_NAME,
1802 IDS_FLAGS_ENABLE_EASY_UNLOCK_DESCRIPTION, 2059 IDS_FLAGS_ENABLE_EASY_UNLOCK_DESCRIPTION,
1803 kOsCrOS, 2060 kOsCrOS,
1804 SINGLE_VALUE_TYPE(switches::kEnableEasyUnlock) 2061 SINGLE_VALUE_TYPE(switches::kEnableEasyUnlock,
2062 UMA_HISTOGRAM_ID_kEnableEasyUnlock)
1805 }, 2063 },
1806 #endif 2064 #endif
1807 { 2065 {
1808 "disable-embedded-shared-worker", 2066 "disable-embedded-shared-worker",
1809 IDS_FLAGS_DISABLE_EMBEDDED_SHARED_WORKER_NAME, 2067 IDS_FLAGS_DISABLE_EMBEDDED_SHARED_WORKER_NAME,
1810 IDS_FLAGS_DISABLE_EMBEDDED_SHARED_WORKER_DESCRIPTION, 2068 IDS_FLAGS_DISABLE_EMBEDDED_SHARED_WORKER_DESCRIPTION,
1811 kOsDesktop, 2069 kOsDesktop,
1812 SINGLE_VALUE_TYPE(switches::kDisableEmbeddedSharedWorker) 2070 SINGLE_VALUE_TYPE(switches::kDisableEmbeddedSharedWorker,
2071 UMA_HISTOGRAM_ID_kDisableEmbeddedSharedWorker)
1813 }, 2072 },
1814 #if defined(OS_CHROMEOS) 2073 #if defined(OS_CHROMEOS)
1815 { 2074 {
1816 "enable-filemanager-mtp", 2075 "enable-filemanager-mtp",
1817 IDS_FLAGS_ENABLE_FILE_MANAGER_MTP_NAME, 2076 IDS_FLAGS_ENABLE_FILE_MANAGER_MTP_NAME,
1818 IDS_FLAGS_ENABLE_FILE_MANAGER_MTP_DESCRIPTION, 2077 IDS_FLAGS_ENABLE_FILE_MANAGER_MTP_DESCRIPTION,
1819 kOsCrOS, 2078 kOsCrOS,
1820 MULTI_VALUE_TYPE(kEnableFileManagerMTPChoices) 2079 MULTI_VALUE_TYPE(kEnableFileManagerMTPChoices)
1821 }, 2080 },
1822 #endif 2081 #endif
1823 // TODO(tyoshino): Remove this temporary flag and command line switch. See 2082 // TODO(tyoshino): Remove this temporary flag and command line switch. See
1824 // crbug.com/366483 for the target milestone. 2083 // crbug.com/366483 for the target milestone.
1825 { 2084 {
1826 "allow-insecure-websocket-from-https-origin", 2085 "allow-insecure-websocket-from-https-origin",
1827 IDS_FLAGS_ALLOW_INSECURE_WEBSOCKET_FROM_HTTPS_ORIGIN_NAME, 2086 IDS_FLAGS_ALLOW_INSECURE_WEBSOCKET_FROM_HTTPS_ORIGIN_NAME,
1828 IDS_FLAGS_ALLOW_INSECURE_WEBSOCKET_FROM_HTTPS_ORIGIN_DESCRIPTION, 2087 IDS_FLAGS_ALLOW_INSECURE_WEBSOCKET_FROM_HTTPS_ORIGIN_DESCRIPTION,
1829 kOsAll, 2088 kOsAll,
1830 SINGLE_VALUE_TYPE(switches::kAllowInsecureWebSocketFromHttpsOrigin) 2089 SINGLE_VALUE_TYPE(
2090 switches::kAllowInsecureWebSocketFromHttpsOrigin,
2091 UMA_HISTOGRAM_ID_kAllowInsecureWebSocketFromHttpsOrigin)
1831 }, 2092 },
1832 #if defined(OS_MACOSX) 2093 #if defined(OS_MACOSX)
1833 { 2094 {
1834 "apps-keep-chrome-alive", 2095 "apps-keep-chrome-alive",
1835 IDS_FLAGS_APPS_KEEP_CHROME_ALIVE_NAME, 2096 IDS_FLAGS_APPS_KEEP_CHROME_ALIVE_NAME,
1836 IDS_FLAGS_APPS_KEEP_CHROME_ALIVE_DESCRIPTION, 2097 IDS_FLAGS_APPS_KEEP_CHROME_ALIVE_DESCRIPTION,
1837 kOsMac, 2098 kOsMac,
1838 SINGLE_VALUE_TYPE(switches::kAppsKeepChromeAlive) 2099 SINGLE_VALUE_TYPE(switches::kAppsKeepChromeAlive,
2100 UMA_HISTOGRAM_ID_kAppsKeepChromeAlive)
1839 }, 2101 },
1840 #endif 2102 #endif
1841 { 2103 {
1842 "enable-apps-file-associations", 2104 "enable-apps-file-associations",
1843 IDS_FLAGS_ENABLE_APPS_FILE_ASSOCIATIONS_NAME, 2105 IDS_FLAGS_ENABLE_APPS_FILE_ASSOCIATIONS_NAME,
1844 IDS_FLAGS_ENABLE_APPS_FILE_ASSOCIATIONS_DESCRIPTION, 2106 IDS_FLAGS_ENABLE_APPS_FILE_ASSOCIATIONS_DESCRIPTION,
1845 kOsMac, 2107 kOsMac,
1846 SINGLE_VALUE_TYPE(switches::kEnableAppsFileAssociations) 2108 SINGLE_VALUE_TYPE(switches::kEnableAppsFileAssociations,
2109 UMA_HISTOGRAM_ID_kEnableAppsFileAssociations)
1847 }, 2110 },
1848 #if defined(OS_ANDROID) 2111 #if defined(OS_ANDROID)
1849 { 2112 {
1850 "enable-embeddedsearch-api", 2113 "enable-embeddedsearch-api",
1851 IDS_FLAGS_ENABLE_EMBEDDEDSEARCH_API_NAME, 2114 IDS_FLAGS_ENABLE_EMBEDDEDSEARCH_API_NAME,
1852 IDS_FLAGS_ENABLE_EMBEDDEDSEARCH_API_DESCRIPTION, 2115 IDS_FLAGS_ENABLE_EMBEDDEDSEARCH_API_DESCRIPTION,
1853 kOsAndroid, 2116 kOsAndroid,
1854 SINGLE_VALUE_TYPE(switches::kEnableEmbeddedSearchAPI) 2117 SINGLE_VALUE_TYPE(switches::kEnableEmbeddedSearchAPI,
2118 UMA_HISTOGRAM_ID_kEnableEmbeddedSearchAPI)
1855 }, 2119 },
1856 { 2120 {
1857 "enable-app-install-alerts", 2121 "enable-app-install-alerts",
1858 IDS_FLAGS_ENABLE_APP_INSTALL_ALERTS_NAME, 2122 IDS_FLAGS_ENABLE_APP_INSTALL_ALERTS_NAME,
1859 IDS_FLAGS_ENABLE_APP_INSTALL_ALERTS_DESCRIPTION, 2123 IDS_FLAGS_ENABLE_APP_INSTALL_ALERTS_DESCRIPTION,
1860 kOsAndroid, 2124 kOsAndroid,
1861 SINGLE_VALUE_TYPE(switches::kEnableAppInstallAlerts) 2125 SINGLE_VALUE_TYPE(switches::kEnableAppInstallAlerts,
2126 UMA_HISTOGRAM_ID_kEnableAppInstallAlerts)
1862 }, 2127 },
1863 #endif 2128 #endif
1864 { 2129 {
1865 "distance-field-text", 2130 "distance-field-text",
1866 IDS_FLAGS_DISTANCE_FIELD_TEXT_NAME, 2131 IDS_FLAGS_DISTANCE_FIELD_TEXT_NAME,
1867 IDS_FLAGS_DISTANCE_FIELD_TEXT_DESCRIPTION, 2132 IDS_FLAGS_DISTANCE_FIELD_TEXT_DESCRIPTION,
1868 kOsAll, 2133 kOsAll,
1869 MULTI_VALUE_TYPE(kDistanceFieldTextChoices) 2134 MULTI_VALUE_TYPE(kDistanceFieldTextChoices)
1870 }, 2135 },
1871 { 2136 {
1872 "extension-content-verification", 2137 "extension-content-verification",
1873 IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_NAME, 2138 IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_NAME,
1874 IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_DESCRIPTION, 2139 IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_DESCRIPTION,
1875 kOsDesktop, 2140 kOsDesktop,
1876 MULTI_VALUE_TYPE(kExtensionContentVerificationChoices) 2141 MULTI_VALUE_TYPE(kExtensionContentVerificationChoices)
1877 }, 2142 },
1878 #if defined(USE_AURA) 2143 #if defined(USE_AURA)
1879 { 2144 {
1880 "text-input-focus-manager", 2145 "text-input-focus-manager",
1881 IDS_FLAGS_TEXT_INPUT_FOCUS_MANAGER_NAME, 2146 IDS_FLAGS_TEXT_INPUT_FOCUS_MANAGER_NAME,
1882 IDS_FLAGS_TEXT_INPUT_FOCUS_MANAGER_DESCRIPTION, 2147 IDS_FLAGS_TEXT_INPUT_FOCUS_MANAGER_DESCRIPTION,
1883 kOsCrOS | kOsLinux | kOsWin, 2148 kOsCrOS | kOsLinux | kOsWin,
1884 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTextInputFocusManager, 2149 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTextInputFocusManager,
1885 switches::kDisableTextInputFocusManager) 2150 UMA_HISTOGRAM_ID_kEnableTextInputFocusManager,
2151 switches::kDisableTextInputFocusManager,
2152 UMA_HISTOGRAM_ID_kDisableTextInputFocusManager)
1886 }, 2153 },
1887 #endif 2154 #endif
1888 { 2155 {
1889 "extension-active-script-permission", 2156 "extension-active-script-permission",
1890 IDS_FLAGS_USER_CONSENT_FOR_EXTENSION_SCRIPTS_NAME, 2157 IDS_FLAGS_USER_CONSENT_FOR_EXTENSION_SCRIPTS_NAME,
1891 IDS_FLAGS_USER_CONSENT_FOR_EXTENSION_SCRIPTS_DESCRIPTION, 2158 IDS_FLAGS_USER_CONSENT_FOR_EXTENSION_SCRIPTS_DESCRIPTION,
1892 kOsAll, 2159 kOsAll,
1893 SINGLE_VALUE_TYPE(extensions::switches::kEnableScriptsRequireAction) 2160 SINGLE_VALUE_TYPE(extensions::switches::kEnableScriptsRequireAction,
2161 UMA_HISTOGRAM_ID_kEnableScriptsRequireAction)
1894 }, 2162 },
1895 { 2163 {
1896 "enable-harfbuzz-rendertext", 2164 "enable-harfbuzz-rendertext",
1897 IDS_FLAGS_ENABLE_HARFBUZZ_RENDERTEXT_NAME, 2165 IDS_FLAGS_ENABLE_HARFBUZZ_RENDERTEXT_NAME,
1898 IDS_FLAGS_ENABLE_HARFBUZZ_RENDERTEXT_DESCRIPTION, 2166 IDS_FLAGS_ENABLE_HARFBUZZ_RENDERTEXT_DESCRIPTION,
1899 kOsDesktop, 2167 kOsDesktop,
1900 SINGLE_VALUE_TYPE(switches::kEnableHarfBuzzRenderText) 2168 SINGLE_VALUE_TYPE(switches::kEnableHarfBuzzRenderText,
2169 UMA_HISTOGRAM_ID_kEnableHarfBuzzRenderText)
1901 }, 2170 },
1902 #if defined(OS_ANDROID) 2171 #if defined(OS_ANDROID)
1903 { 2172 {
1904 "enable-answers-in-suggest", 2173 "enable-answers-in-suggest",
1905 IDS_FLAGS_ENABLE_ANSWERS_IN_SUGGEST_NAME, 2174 IDS_FLAGS_ENABLE_ANSWERS_IN_SUGGEST_NAME,
1906 IDS_FLAGS_ENABLE_ANSWERS_IN_SUGGEST_DESCRIPTION, 2175 IDS_FLAGS_ENABLE_ANSWERS_IN_SUGGEST_DESCRIPTION,
1907 kOsAndroid, 2176 kOsAndroid,
1908 SINGLE_VALUE_TYPE(switches::kEnableAnswersInSuggest) 2177 SINGLE_VALUE_TYPE(switches::kEnableAnswersInSuggest,
2178 UMA_HISTOGRAM_ID_kEnableAnswersInSuggest)
1909 }, 2179 },
1910 #endif 2180 #endif
1911 { 2181 {
1912 "ssl-interstitial-version", 2182 "ssl-interstitial-version",
1913 IDS_FLAGS_SSL_INTERSTITIAL_TRIAL_NAME, 2183 IDS_FLAGS_SSL_INTERSTITIAL_TRIAL_NAME,
1914 IDS_FLAGS_SSL_INTERSTITIAL_TRIAL_DESCRIPTION, 2184 IDS_FLAGS_SSL_INTERSTITIAL_TRIAL_DESCRIPTION,
1915 kOsAll, 2185 kOsAll,
1916 MULTI_VALUE_TYPE(kSSLInterstitialVersions) 2186 MULTI_VALUE_TYPE(kSSLInterstitialVersions)
1917 }, 2187 },
1918 { 2188 {
1919 "malware-interstitial-version", 2189 "malware-interstitial-version",
1920 IDS_FLAGS_MALWARE_INTERSTITIAL_TRIAL_NAME, 2190 IDS_FLAGS_MALWARE_INTERSTITIAL_TRIAL_NAME,
1921 IDS_FLAGS_MALWARE_INTERSTITIAL_TRIAL_DESCRIPTION, 2191 IDS_FLAGS_MALWARE_INTERSTITIAL_TRIAL_DESCRIPTION,
1922 kOsAll, 2192 kOsAll,
1923 MULTI_VALUE_TYPE(kMalwareInterstitialVersions) 2193 MULTI_VALUE_TYPE(kMalwareInterstitialVersions)
1924 }, 2194 },
1925 #if defined(OS_ANDROID) 2195 #if defined(OS_ANDROID)
1926 { 2196 {
1927 "enable-data-reduction-proxy-dev", 2197 "enable-data-reduction-proxy-dev",
1928 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_DEV_NAME, 2198 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_DEV_NAME,
1929 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_DEV_DESCRIPTION, 2199 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_DEV_DESCRIPTION,
1930 kOsAndroid, 2200 kOsAndroid,
1931 ENABLE_DISABLE_VALUE_TYPE( 2201 ENABLE_DISABLE_VALUE_TYPE(
1932 data_reduction_proxy::switches::kEnableDataReductionProxyDev, 2202 data_reduction_proxy::switches::kEnableDataReductionProxyDev,
1933 data_reduction_proxy::switches::kDisableDataReductionProxyDev) 2203 UMA_HISTOGRAM_ID_kEnableDataReductionProxyDev,
2204 data_reduction_proxy::switches::kDisableDataReductionProxyDev,
2205 UMA_HISTOGRAM_ID_kDisableDataReductionProxyDev)
1934 }, 2206 },
1935 #endif 2207 #endif
1936 }; 2208 };
1937 2209
1938 const Experiment* experiments = kExperiments; 2210 const Experiment* experiments = kExperiments;
1939 size_t num_experiments = arraysize(kExperiments); 2211 size_t num_experiments = arraysize(kExperiments);
1940 2212
1941 // Stores and encapsulates the little state that about:flags has. 2213 // Stores and encapsulates the little state that about:flags has.
1942 class FlagsState { 2214 class FlagsState {
1943 public: 2215 public:
1944 FlagsState() : needs_restart_(false) {} 2216 FlagsState() : needs_restart_(false) {}
1945 void ConvertFlagsToSwitches(FlagsStorage* flags_storage, 2217 void ConvertFlagsToSwitches(FlagsStorage* flags_storage,
1946 CommandLine* command_line, 2218 CommandLine* command_line,
1947 SentinelsMode sentinels); 2219 SentinelsMode sentinels);
2220 const SwitchesHistogramIDs& GetSwitchesHistogramIds();
1948 bool IsRestartNeededToCommitChanges(); 2221 bool IsRestartNeededToCommitChanges();
1949 void SetExperimentEnabled( 2222 void SetExperimentEnabled(
1950 FlagsStorage* flags_storage, 2223 FlagsStorage* flags_storage,
1951 const std::string& internal_name, 2224 const std::string& internal_name,
1952 bool enable); 2225 bool enable);
1953 void RemoveFlagsSwitches( 2226 void RemoveFlagsSwitches(
1954 std::map<std::string, CommandLine::StringType>* switch_list); 2227 std::map<std::string, CommandLine::StringType>* switch_list);
1955 void ResetAllFlags(FlagsStorage* flags_storage); 2228 void ResetAllFlags(FlagsStorage* flags_storage);
1956 void reset(); 2229 void reset();
1957 2230
1958 // Returns the singleton instance of this class 2231 // Returns the singleton instance of this class
1959 static FlagsState* GetInstance() { 2232 static FlagsState* GetInstance() {
1960 return Singleton<FlagsState>::get(); 2233 return Singleton<FlagsState>::get();
1961 } 2234 }
1962 2235
1963 private: 2236 private:
1964 bool needs_restart_; 2237 bool needs_restart_;
1965 std::map<std::string, std::string> flags_switches_; 2238 std::map<std::string, std::string> flags_switches_;
2239 // Lazy initialized by GetSwitchesHistogramIds().
2240 SwitchesHistogramIDs switches_histogram_id_;
1966 2241
1967 DISALLOW_COPY_AND_ASSIGN(FlagsState); 2242 DISALLOW_COPY_AND_ASSIGN(FlagsState);
1968 }; 2243 };
1969 2244
1970 // Adds the internal names for the specified experiment to |names|. 2245 // Adds the internal names for the specified experiment to |names|.
1971 void AddInternalName(const Experiment& e, std::set<std::string>* names) { 2246 void AddInternalName(const Experiment& e, std::set<std::string>* names) {
1972 if (e.type == Experiment::SINGLE_VALUE) { 2247 if (e.type == Experiment::SINGLE_VALUE) {
1973 names->insert(e.internal_name); 2248 names->insert(e.internal_name);
1974 } else { 2249 } else {
1975 DCHECK(e.type == Experiment::MULTI_VALUE || 2250 DCHECK(e.type == Experiment::MULTI_VALUE ||
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
2136 } 2411 }
2137 2412
2138 void ConvertFlagsToSwitches(FlagsStorage* flags_storage, 2413 void ConvertFlagsToSwitches(FlagsStorage* flags_storage,
2139 CommandLine* command_line, 2414 CommandLine* command_line,
2140 SentinelsMode sentinels) { 2415 SentinelsMode sentinels) {
2141 FlagsState::GetInstance()->ConvertFlagsToSwitches(flags_storage, 2416 FlagsState::GetInstance()->ConvertFlagsToSwitches(flags_storage,
2142 command_line, 2417 command_line,
2143 sentinels); 2418 sentinels);
2144 } 2419 }
2145 2420
2421 const SwitchesHistogramIDs& GetSwitchesHistogramIds() {
2422 return FlagsState::GetInstance()->GetSwitchesHistogramIds();
2423 }
2424
2146 bool AreSwitchesIdenticalToCurrentCommandLine( 2425 bool AreSwitchesIdenticalToCurrentCommandLine(
2147 const CommandLine& new_cmdline, const CommandLine& active_cmdline) { 2426 const CommandLine& new_cmdline,
2427 const CommandLine& active_cmdline,
2428 std::set<CommandLine::StringType>* out_difference) {
2148 std::set<CommandLine::StringType> new_flags = 2429 std::set<CommandLine::StringType> new_flags =
2149 ExtractFlagsFromCommandLine(new_cmdline); 2430 ExtractFlagsFromCommandLine(new_cmdline);
2150 std::set<CommandLine::StringType> active_flags = 2431 std::set<CommandLine::StringType> active_flags =
2151 ExtractFlagsFromCommandLine(active_cmdline); 2432 ExtractFlagsFromCommandLine(active_cmdline);
2152 2433
2434 bool result = false;
2153 // Needed because std::equal doesn't check if the 2nd set is empty. 2435 // Needed because std::equal doesn't check if the 2nd set is empty.
2154 if (new_flags.size() != active_flags.size()) 2436 if (new_flags.size() == active_flags.size()) {
2155 return false; 2437 result =
2438 std::equal(new_flags.begin(), new_flags.end(), active_flags.begin());
2439 }
2156 2440
2157 return std::equal(new_flags.begin(), new_flags.end(), active_flags.begin()); 2441 if (out_difference && !result) {
2442 std::set_symmetric_difference(
2443 new_flags.begin(),
2444 new_flags.end(),
2445 active_flags.begin(),
2446 active_flags.end(),
2447 std::inserter(*out_difference, out_difference->begin()));
2448 }
2449
2450 return result;
2158 } 2451 }
2159 2452
2160 void GetFlagsExperimentsData(FlagsStorage* flags_storage, 2453 void GetFlagsExperimentsData(FlagsStorage* flags_storage,
2161 FlagAccess access, 2454 FlagAccess access,
2162 base::ListValue* supported_experiments, 2455 base::ListValue* supported_experiments,
2163 base::ListValue* unsupported_experiments) { 2456 base::ListValue* unsupported_experiments) {
2164 std::set<std::string> enabled_experiments; 2457 std::set<std::string> enabled_experiments;
2165 GetSanitizedEnabledFlags(flags_storage, &enabled_experiments); 2458 GetSanitizedEnabledFlags(flags_storage, &enabled_experiments);
2166 2459
2167 int current_platform = GetCurrentPlatform(); 2460 int current_platform = GetCurrentPlatform();
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
2255 action += *it; 2548 action += *it;
2256 content::RecordComputedAction(action); 2549 content::RecordComputedAction(action);
2257 } 2550 }
2258 // Since flag metrics are recorded every startup, add a tick so that the 2551 // Since flag metrics are recorded every startup, add a tick so that the
2259 // stats can be made meaningful. 2552 // stats can be made meaningful.
2260 if (flags.size()) 2553 if (flags.size())
2261 content::RecordAction(UserMetricsAction("AboutFlags_StartupTick")); 2554 content::RecordAction(UserMetricsAction("AboutFlags_StartupTick"));
2262 content::RecordAction(UserMetricsAction("StartupTick")); 2555 content::RecordAction(UserMetricsAction("StartupTick"));
2263 } 2556 }
2264 2557
2558 void ReportCustomFlags(const std::string& uma_histogram_hame,
2559 const std::set<std::string>& command_line_difference) {
2560 const about_flags::SwitchesHistogramIDs& switch_histogram_id_map =
2561 about_flags::GetSwitchesHistogramIds();
2562 for (std::set<std::string>::const_iterator it =
2563 command_line_difference.begin();
2564 it != command_line_difference.end();
2565 ++it) {
2566 int uma_id = about_flags::UMA_HISTOGRAM_ID_UNKNOWN_FLAG;
2567 if (it->size() > 2) {
2568 // skip '--' before switch name
2569 std::string switch_name(it->substr(2));
2570
2571 // kill value, if any
2572 const size_t value_pos = switch_name.find('=');
2573 if (value_pos != std::string::npos)
2574 switch_name.resize(value_pos);
2575
2576 const about_flags::SwitchesHistogramIDs::const_iterator pos =
2577 switch_histogram_id_map.find(switch_name);
2578 if (pos != switch_histogram_id_map.end()) {
2579 uma_id = pos->second;
2580 } else {
2581 uma_id = about_flags::UMA_HISTOGRAM_ID_UNKNOWN_FLAG;
2582 LOG(ERROR) << "ReportCustomFlags(): flag '" << *it << "' ('"
2583 << switch_name << "') is unknown.";
2584 }
2585 } else {
2586 uma_id = about_flags::UMA_HISTOGRAM_ID_BAD_FLAG_FORMAT;
2587 LOG(ERROR) << "ReportCustomFlags(): flag '" << *it
2588 << "' has incorrect format.";
2589 }
2590 VLOG(1) << "ReportCustomFlags(): histogram='" << uma_histogram_hame << "' '"
2591 << *it << "', uma_id=" << uma_id;
2592 UMA_HISTOGRAM_SPARSE_SLOWLY(uma_histogram_hame, uma_id);
2593 }
2594 }
2595
2265 ////////////////////////////////////////////////////////////////////////////// 2596 //////////////////////////////////////////////////////////////////////////////
2266 // FlagsState implementation. 2597 // FlagsState implementation.
2267 2598
2268 namespace { 2599 namespace {
2269 2600
2270 typedef std::map<std::string, std::pair<std::string, std::string> > 2601 typedef std::map<std::string, std::pair<std::string, std::string> >
2271 NameToSwitchAndValueMap; 2602 NameToSwitchAndValueMap;
2272 2603
2273 void SetFlagToSwitchMapping(const std::string& key, 2604 void SetFlagToSwitchMapping(const std::string& key,
2274 const std::string& switch_name, 2605 const std::string& switch_name,
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
2339 flags_switches_[switch_and_value_pair.first] = switch_and_value_pair.second; 2670 flags_switches_[switch_and_value_pair.first] = switch_and_value_pair.second;
2340 } 2671 }
2341 if (sentinels == kAddSentinels) { 2672 if (sentinels == kAddSentinels) {
2342 command_line->AppendSwitch(switches::kFlagSwitchesEnd); 2673 command_line->AppendSwitch(switches::kFlagSwitchesEnd);
2343 flags_switches_.insert( 2674 flags_switches_.insert(
2344 std::pair<std::string, std::string>(switches::kFlagSwitchesEnd, 2675 std::pair<std::string, std::string>(switches::kFlagSwitchesEnd,
2345 std::string())); 2676 std::string()));
2346 } 2677 }
2347 } 2678 }
2348 2679
2680 void SetSwitchToHistogramIdMapping(const std::string& switch_name,
2681 const int switch_histogram_id,
2682 std::map<std::string, int>* out_map) {
2683 const std::pair<std::map<std::string, int>::iterator, bool> status =
2684 out_map->insert(std::make_pair(switch_name, switch_histogram_id));
2685 DCHECK(status.second || status.first->second == switch_histogram_id);
2686 }
2687
2688 const SwitchesHistogramIDs& FlagsState::GetSwitchesHistogramIds() {
2689 if (!switches_histogram_id_.empty())
2690 return switches_histogram_id_;
2691
2692 for (size_t i = 0; i < num_experiments; ++i) {
2693 const Experiment& e = experiments[i];
2694 if (e.type == Experiment::SINGLE_VALUE) {
2695 SetSwitchToHistogramIdMapping(e.command_line_switch,
2696 e.command_line_switch_histogram_id,
2697 &switches_histogram_id_);
2698 } else if (e.type == Experiment::MULTI_VALUE) {
2699 for (int j = 0; j < e.num_choices; ++j) {
2700 SetSwitchToHistogramIdMapping(
2701 e.choices[j].command_line_switch,
2702 e.choices[j].command_line_switch_histogram_id,
2703 &switches_histogram_id_);
2704 }
2705 } else {
2706 DCHECK_EQ(e.type, Experiment::ENABLE_DISABLE_VALUE);
2707 SetSwitchToHistogramIdMapping(e.command_line_switch,
2708 e.command_line_switch_histogram_id,
2709 &switches_histogram_id_);
2710 SetSwitchToHistogramIdMapping(e.disable_command_line_switch,
2711 e.disable_command_line_switch_histogram_id,
2712 &switches_histogram_id_);
2713 }
2714 }
2715 return switches_histogram_id_;
2716 }
2717
2349 bool FlagsState::IsRestartNeededToCommitChanges() { 2718 bool FlagsState::IsRestartNeededToCommitChanges() {
2350 return needs_restart_; 2719 return needs_restart_;
2351 } 2720 }
2352 2721
2353 void FlagsState::SetExperimentEnabled(FlagsStorage* flags_storage, 2722 void FlagsState::SetExperimentEnabled(FlagsStorage* flags_storage,
2354 const std::string& internal_name, 2723 const std::string& internal_name,
2355 bool enable) { 2724 bool enable) {
2356 size_t at_index = internal_name.find(testing::kMultiSeparator); 2725 size_t at_index = internal_name.find(testing::kMultiSeparator);
2357 if (at_index != std::string::npos) { 2726 if (at_index != std::string::npos) {
2358 DCHECK(enable); 2727 DCHECK(enable);
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
2454 } 2823 }
2455 2824
2456 const Experiment* GetExperiments(size_t* count) { 2825 const Experiment* GetExperiments(size_t* count) {
2457 *count = num_experiments; 2826 *count = num_experiments;
2458 return experiments; 2827 return experiments;
2459 } 2828 }
2460 2829
2461 } // namespace testing 2830 } // namespace testing
2462 2831
2463 } // namespace about_flags 2832 } // namespace about_flags
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698