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

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

Powered by Google App Engine
This is Rietveld 408576698