blob: edb9981dab995e4cd0027e9cca7a163e2ca1c64f [file] [log] [blame]
[email protected]9c66adc2012-01-05 02:10:161// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]ad2a3ded2010-08-27 13:19:052// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]1a47d7e2010-10-15 00:37:245#include "chrome/browser/about_flags.h"
[email protected]ad2a3ded2010-08-27 13:19:056
[email protected]ad2a3ded2010-08-27 13:19:057#include <iterator>
8#include <map>
9#include <set>
[email protected]83e9fa702013-02-25 19:30:4410#include <utility>
[email protected]ad2a3ded2010-08-27 13:19:0511
[email protected]ad2a3ded2010-08-27 13:19:0512#include "base/command_line.h"
[email protected]3b63f8f42011-03-28 01:54:1513#include "base/memory/singleton.h"
[email protected]4b66a7d2014-08-15 17:13:3114#include "base/metrics/sparse_histogram.h"
[email protected]09f3fde82014-05-14 15:08:1515#include "base/stl_util.h"
[email protected]3ea1b182013-02-08 22:38:4116#include "base/strings/string_number_conversions.h"
[email protected]4b66a7d2014-08-15 17:13:3117#include "base/strings/string_util.h"
[email protected]135cb802013-06-09 16:44:2018#include "base/strings/utf_string_conversions.h"
[email protected]ad2a3ded2010-08-27 13:19:0519#include "base/values.h"
[email protected]681ccff2013-03-18 06:13:5220#include "cc/base/switches.h"
[email protected]e6d1c4f2013-06-12 17:37:4021#include "chrome/browser/flags_storage.h"
[email protected]d208f4d82011-05-23 21:52:0322#include "chrome/common/chrome_content_client.h"
[email protected]ad2a3ded2010-08-27 13:19:0523#include "chrome/common/chrome_switches.h"
gburanovfc88a24c2015-04-14 00:00:5724#include "chrome/grit/chromium_strings.h"
[email protected]af39f002014-08-22 10:18:1825#include "chrome/grit/generated_resources.h"
gburanovfc88a24c2015-04-14 00:00:5726#include "chrome/grit/google_chrome_strings.h"
[email protected]58bc1c32013-12-16 22:52:0727#include "components/autofill/core/common/autofill_switches.h"
[email protected]4e6c96e2014-05-17 18:41:1928#include "components/cloud_devices/common/cloud_devices_switches.h"
cjhopman951bb612015-04-22 01:42:3829#include "components/dom_distiller/core/dom_distiller_switches.h"
[email protected]4b66a7d2014-08-15 17:13:3130#include "components/metrics/metrics_hashes.h"
[email protected]cbb22eb2013-06-24 23:53:1031#include "components/nacl/common/nacl_switches.h"
dschuyler26d368742015-02-12 00:18:2432#include "components/omnibox/omnibox_switches.h"
dbeam155ac972015-04-20 15:34:4833#include "components/plugins/common/plugins_switches.h"
isherman96bfc8d22014-11-06 00:42:4634#include "components/proximity_auth/switches.h"
[email protected]720b10492014-07-23 08:48:4035#include "components/search/search_switches.h"
[email protected]7f6f44c2011-12-14 13:23:3836#include "content/public/browser/user_metrics.h"
[email protected]e2e8e322012-09-12 04:37:0237#include "media/base/media_switches.h"
[email protected]c051a1b2011-01-21 23:30:1738#include "ui/base/l10n/l10n_util.h"
[email protected]c9c73ad42012-04-18 03:35:5939#include "ui/base/ui_base_switches.h"
[email protected]bf3f4592014-03-31 19:50:4440#include "ui/display/display_switches.h"
[email protected]a6147a22013-09-26 06:55:0941#include "ui/events/event_switches.h"
[email protected]0d3b9dd2012-11-14 04:14:4842#include "ui/gfx/switches.h"
[email protected]c9e2cbbb2012-05-12 21:17:2743#include "ui/gl/gl_switches.h"
[email protected]86459e2c2013-04-10 13:39:2444#include "ui/keyboard/keyboard_switches.h"
[email protected]e3d512a72014-03-18 20:50:4745#include "ui/native_theme/native_theme_switches.h"
[email protected]c4f51d22013-11-05 03:11:2646#include "ui/views/views_switches.h"
[email protected]9a224572013-05-12 23:08:5647
[email protected]3dfb4012014-06-11 07:33:3848#if defined(OS_ANDROID)
49#include "chrome/common/chrome_version_info.h"
megjablon3476e042014-10-14 19:21:5950#include "components/data_reduction_proxy/core/common/data_reduction_proxy_switches.h"
juyika7be5192014-08-26 23:01:0451#else
52#include "ui/message_center/message_center_switches.h"
[email protected]3dfb4012014-06-11 07:33:3853#endif
54
[email protected]dc04be7c2012-03-15 23:57:4955#if defined(USE_ASH)
[email protected]b65bdda2011-12-23 23:35:3156#include "ash/ash_switches.h"
[email protected]dc04be7c2012-03-15 23:57:4957#endif
58
[email protected]badba1ad2012-11-16 17:21:4659#if defined(OS_CHROMEOS)
60#include "chromeos/chromeos_switches.h"
[email protected]6d98abf2013-06-17 23:35:5161#include "third_party/cros_system_api/switches/chrome_switches.h"
[email protected]badba1ad2012-11-16 17:21:4662#endif
63
[email protected]fe2b77f62013-11-09 04:30:5164#if defined(ENABLE_APP_LIST)
65#include "ui/app_list/app_list_switches.h"
66#endif
67
thestigb012bc3d2014-09-18 22:57:1368#if defined(ENABLE_EXTENSIONS)
69#include "extensions/common/switches.h"
70#endif
71
alexst24a14a322015-03-10 21:06:0972#if defined(USE_OZONE)
73#include "ui/ozone/public/ozone_switches.h"
74#endif
75
[email protected]1a47d7e2010-10-15 00:37:2476namespace about_flags {
[email protected]ad2a3ded2010-08-27 13:19:0577
[email protected]8a6ff28d2010-12-02 16:35:1978// Macros to simplify specifying the type.
[email protected]a82744532011-02-11 16:15:5379#define SINGLE_VALUE_TYPE_AND_VALUE(command_line_switch, switch_value) \
[email protected]83e9fa702013-02-25 19:30:4480 Experiment::SINGLE_VALUE, \
81 command_line_switch, switch_value, NULL, NULL, NULL, 0
[email protected]a82744532011-02-11 16:15:5382#define SINGLE_VALUE_TYPE(command_line_switch) \
83 SINGLE_VALUE_TYPE_AND_VALUE(command_line_switch, "")
[email protected]83e9fa702013-02-25 19:30:4484#define ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(enable_switch, enable_value, \
85 disable_switch, disable_value) \
86 Experiment::ENABLE_DISABLE_VALUE, enable_switch, enable_value, \
87 disable_switch, disable_value, NULL, 3
88#define ENABLE_DISABLE_VALUE_TYPE(enable_switch, disable_switch) \
89 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(enable_switch, "", disable_switch, "")
[email protected]a82744532011-02-11 16:15:5390#define MULTI_VALUE_TYPE(choices) \
[email protected]83e9fa702013-02-25 19:30:4491 Experiment::MULTI_VALUE, NULL, NULL, NULL, NULL, choices, arraysize(choices)
[email protected]8a6ff28d2010-12-02 16:35:1992
[email protected]e2ddbc92010-10-15 20:02:0793namespace {
94
asvitkinebff63b22014-11-25 01:03:5295// Enumeration of OSs.
96enum {
97 kOsMac = 1 << 0,
98 kOsWin = 1 << 1,
99 kOsLinux = 1 << 2,
100 kOsCrOS = 1 << 3,
101 kOsAndroid = 1 << 4,
102 kOsCrOSOwnerOnly = 1 << 5
103};
104
[email protected]9c7453d2012-01-21 00:45:40105const unsigned kOsAll = kOsMac | kOsWin | kOsLinux | kOsCrOS | kOsAndroid;
[email protected]f3cd6802013-01-23 20:25:56106const unsigned kOsDesktop = kOsMac | kOsWin | kOsLinux | kOsCrOS;
[email protected]ad2a3ded2010-08-27 13:19:05107
[email protected]cc3e2052011-12-20 01:01:40108// Adds a |StringValue| to |list| for each platform where |bitmask| indicates
109// whether the experiment is available on that platform.
[email protected]5bcdd99d2013-12-23 18:28:30110void AddOsStrings(unsigned bitmask, base::ListValue* list) {
[email protected]cc3e2052011-12-20 01:01:40111 struct {
112 unsigned bit;
113 const char* const name;
114 } kBitsToOs[] = {
115 {kOsMac, "Mac"},
116 {kOsWin, "Windows"},
117 {kOsLinux, "Linux"},
118 {kOsCrOS, "Chrome OS"},
[email protected]4052d832013-01-16 05:31:01119 {kOsAndroid, "Android"},
[email protected]37736bd2013-04-18 11:53:58120 {kOsCrOSOwnerOnly, "Chrome OS (owner only)"},
[email protected]cc3e2052011-12-20 01:01:40121 };
asvitkinebff63b22014-11-25 01:03:52122 for (size_t i = 0; i < arraysize(kBitsToOs); ++i) {
[email protected]cc3e2052011-12-20 01:01:40123 if (bitmask & kBitsToOs[i].bit)
[email protected]5bcdd99d2013-12-23 18:28:30124 list->Append(new base::StringValue(kBitsToOs[i].name));
asvitkinebff63b22014-11-25 01:03:52125 }
[email protected]cc3e2052011-12-20 01:01:40126}
127
[email protected]6d98abf2013-06-17 23:35:51128// Convert switch constants to proper CommandLine::StringType strings.
avi3ef9ec9e2014-12-22 22:50:17129base::CommandLine::StringType GetSwitchString(const std::string& flag) {
130 base::CommandLine cmd_line(base::CommandLine::NO_PROGRAM);
[email protected]6d98abf2013-06-17 23:35:51131 cmd_line.AppendSwitch(flag);
[email protected]4ac579b2014-05-20 06:43:23132 DCHECK_EQ(2U, cmd_line.argv().size());
[email protected]6d98abf2013-06-17 23:35:51133 return cmd_line.argv()[1];
134}
135
136// Scoops flags from a command line.
avi3ef9ec9e2014-12-22 22:50:17137std::set<base::CommandLine::StringType> ExtractFlagsFromCommandLine(
138 const base::CommandLine& cmdline) {
139 std::set<base::CommandLine::StringType> flags;
[email protected]6d98abf2013-06-17 23:35:51140 // First do the ones between --flag-switches-begin and --flag-switches-end.
avi3ef9ec9e2014-12-22 22:50:17141 base::CommandLine::StringVector::const_iterator first =
[email protected]6d98abf2013-06-17 23:35:51142 std::find(cmdline.argv().begin(), cmdline.argv().end(),
143 GetSwitchString(switches::kFlagSwitchesBegin));
avi3ef9ec9e2014-12-22 22:50:17144 base::CommandLine::StringVector::const_iterator last =
[email protected]6d98abf2013-06-17 23:35:51145 std::find(cmdline.argv().begin(), cmdline.argv().end(),
146 GetSwitchString(switches::kFlagSwitchesEnd));
147 if (first != cmdline.argv().end() && last != cmdline.argv().end())
148 flags.insert(first + 1, last);
149#if defined(OS_CHROMEOS)
150 // Then add those between --policy-switches-begin and --policy-switches-end.
151 first = std::find(cmdline.argv().begin(), cmdline.argv().end(),
152 GetSwitchString(chromeos::switches::kPolicySwitchesBegin));
153 last = std::find(cmdline.argv().begin(), cmdline.argv().end(),
154 GetSwitchString(chromeos::switches::kPolicySwitchesEnd));
155 if (first != cmdline.argv().end() && last != cmdline.argv().end())
156 flags.insert(first + 1, last);
157#endif
158 return flags;
159}
160
[email protected]d7932532012-11-21 21:10:31161const Experiment::Choice kTouchEventsChoices[] = {
162 { IDS_GENERIC_EXPERIMENT_CHOICE_AUTOMATIC, "", "" },
163 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
164 switches::kTouchEvents,
165 switches::kTouchEventsEnabled },
166 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
167 switches::kTouchEvents,
168 switches::kTouchEventsDisabled }
169};
170
[email protected]c38e9802014-02-18 21:32:12171#if defined(USE_AURA)
172const Experiment::Choice kOverscrollHistoryNavigationChoices[] = {
173 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED, "", "" },
174 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
175 switches::kOverscrollHistoryNavigation,
176 "0" },
177 { IDS_OVERSCROLL_HISTORY_NAVIGATION_SIMPLE_UI,
178 switches::kOverscrollHistoryNavigation,
179 "2" }
180};
181#endif
182
mfomitchev5ad034ec2015-04-24 21:57:27183const Experiment::Choice kTouchTextSelectionStrategyChoices[] = {
184 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
185 { IDS_TOUCH_SELECTION_STRATEGY_CHARACTER,
186 switches::kTouchTextSelectionStrategy,
187 "character" },
188 { IDS_TOUCH_SELECTION_STRATEGY_DIRECTION,
189 switches::kTouchTextSelectionStrategy,
190 "direction" }
191};
192
[email protected]d33d2222014-06-04 15:39:58193#if !defined(DISABLE_NACL)
[email protected]66f409c2012-10-04 20:59:04194const Experiment::Choice kNaClDebugMaskChoices[] = {
[email protected]66f409c2012-10-04 20:59:04195 // Secure shell can be used on ChromeOS for forwarding the TCP port opened by
[email protected]402bed6e2014-03-07 08:33:09196 // debug stub to a remote machine. Since secure shell uses NaCl, we usually
197 // want to avoid debugging that. The PNaCl translator is also a NaCl module,
198 // so by default we want to avoid debugging that.
199 // NOTE: As the default value must be the empty string, the mask excluding
200 // the PNaCl translator and secure shell is substituted elsewhere.
201 { IDS_NACL_DEBUG_MASK_CHOICE_EXCLUDE_UTILS_PNACL, "", "" },
202 { IDS_NACL_DEBUG_MASK_CHOICE_DEBUG_ALL, switches::kNaClDebugMask, "*://*" },
[email protected]66f409c2012-10-04 20:59:04203 { IDS_NACL_DEBUG_MASK_CHOICE_INCLUDE_DEBUG,
204 switches::kNaClDebugMask, "*://*/*debug.nmf" }
205};
[email protected]d33d2222014-06-04 15:39:58206#endif
[email protected]66f409c2012-10-04 20:59:04207
palmer601fe3c2015-01-23 20:43:02208const Experiment::Choice kMarkNonSecureAsChoices[] = {
209 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
210 { IDS_MARK_NON_SECURE_AS_NEUTRAL,
211 switches::kMarkNonSecureAs, switches::kMarkNonSecureAsNeutral},
212 { IDS_MARK_NON_SECURE_AS_NON_SECURE,
213 switches::kMarkNonSecureAs, switches::kMarkNonSecureAsNonSecure},
214 { IDS_MARK_NON_SECURE_AS_DUBIOUS,
215 switches::kMarkNonSecureAs, switches::kMarkNonSecureAsDubious}
216};
217
[email protected]a42c85f2013-04-04 18:15:12218const Experiment::Choice kMaxTilesForInterestAreaChoices[] = {
219 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
220 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_SHORT,
221 cc::switches::kMaxTilesForInterestArea, "64"},
222 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_TALL,
223 cc::switches::kMaxTilesForInterestArea, "128"},
224 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_GRANDE,
225 cc::switches::kMaxTilesForInterestArea, "256"},
226 { IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_VENTI,
227 cc::switches::kMaxTilesForInterestArea, "512"}
228};
229
megjablon78a42542015-03-11 18:23:23230const Experiment::Choice kShowSavedCopyChoices[] = {
231 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
232 { IDS_FLAGS_ENABLE_SHOW_SAVED_COPY_PRIMARY,
233 switches::kShowSavedCopy, switches::kEnableShowSavedCopyPrimary },
234 { IDS_FLAGS_ENABLE_SHOW_SAVED_COPY_SECONDARY,
235 switches::kShowSavedCopy, switches::kEnableShowSavedCopySecondary },
236 { IDS_FLAGS_DISABLE_SHOW_SAVED_COPY,
237 switches::kShowSavedCopy, switches::kDisableShowSavedCopy }
238};
239
[email protected]a3618122013-04-26 21:15:34240const Experiment::Choice kDefaultTileWidthChoices[] = {
241 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
242 { IDS_FLAGS_DEFAULT_TILE_WIDTH_SHORT,
243 switches::kDefaultTileWidth, "128"},
244 { IDS_FLAGS_DEFAULT_TILE_WIDTH_TALL,
245 switches::kDefaultTileWidth, "256"},
246 { IDS_FLAGS_DEFAULT_TILE_WIDTH_GRANDE,
247 switches::kDefaultTileWidth, "512"},
248 { IDS_FLAGS_DEFAULT_TILE_WIDTH_VENTI,
249 switches::kDefaultTileWidth, "1024"}
250};
251
252const Experiment::Choice kDefaultTileHeightChoices[] = {
253 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
254 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_SHORT,
255 switches::kDefaultTileHeight, "128"},
256 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_TALL,
257 switches::kDefaultTileHeight, "256"},
258 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_GRANDE,
259 switches::kDefaultTileHeight, "512"},
260 { IDS_FLAGS_DEFAULT_TILE_HEIGHT_VENTI,
261 switches::kDefaultTileHeight, "1024"}
262};
263
[email protected]38484df12013-04-10 16:42:03264const Experiment::Choice kSimpleCacheBackendChoices[] = {
[email protected]9a3de3e32013-04-23 19:05:21265 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
266 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
267 switches::kUseSimpleCacheBackend, "off" },
[email protected]38484df12013-04-10 16:42:03268 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
269 switches::kUseSimpleCacheBackend, "on"}
270};
271
[email protected]9afc14e22013-09-25 22:34:14272#if defined(USE_AURA)
[email protected]910ecfe2013-06-03 23:38:14273const Experiment::Choice kTabCaptureUpscaleQualityChoices[] = {
274 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
275 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_FAST,
276 switches::kTabCaptureUpscaleQuality, "fast" },
277 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_GOOD,
278 switches::kTabCaptureUpscaleQuality, "good" },
279 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_BEST,
280 switches::kTabCaptureUpscaleQuality, "best" },
281};
282
283const Experiment::Choice kTabCaptureDownscaleQualityChoices[] = {
284 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
285 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_FAST,
286 switches::kTabCaptureDownscaleQuality, "fast" },
287 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_GOOD,
288 switches::kTabCaptureDownscaleQuality, "good" },
289 { IDS_FLAGS_TAB_CAPTURE_SCALE_QUALITY_BEST,
290 switches::kTabCaptureDownscaleQuality, "best" },
291};
[email protected]9afc14e22013-09-25 22:34:14292#endif
[email protected]910ecfe2013-06-03 23:38:14293
[email protected]d5874f12013-12-05 04:30:00294#if defined(OS_ANDROID)
295const Experiment::Choice kZeroSuggestExperimentsChoices[] = {
296 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
297 { IDS_FLAGS_ZERO_SUGGEST_MOST_VISITED,
298 switches::kEnableZeroSuggestMostVisited, ""},
mariakhomenkoad3bfef2014-10-27 22:57:33299 { IDS_FLAGS_ZERO_SUGGEST_MOST_VISITED_WITHOUT_SERP,
300 switches::kEnableZeroSuggestMostVisitedWithoutSerp, ""},
[email protected]d5874f12013-12-05 04:30:00301 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
302 switches::kDisableZeroSuggest, ""}
303};
cjhopman951bb612015-04-22 01:42:38304
305const Experiment::Choice kReaderModeHeuristicsChoices[] = {
306 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", ""},
307 { IDS_FLAGS_READER_MODE_HEURISTICS_MARKUP,
308 switches::kReaderModeHeuristics,
309 switches::reader_mode_heuristics::kOGArticle },
310 { IDS_FLAGS_READER_MODE_HEURISTICS_ADABOOST,
311 switches::kReaderModeHeuristics,
312 switches::reader_mode_heuristics::kAdaBoost },
313 { IDS_FLAGS_READER_MODE_HEURISTICS_ALWAYS_ON,
314 switches::kReaderModeHeuristics,
315 switches::reader_mode_heuristics::kAlwaysTrue },
316 { IDS_FLAGS_READER_MODE_HEURISTICS_ALWAYS_OFF,
317 switches::kReaderModeHeuristics,
318 switches::reader_mode_heuristics::kNone },
319};
[email protected]d5874f12013-12-05 04:30:00320#endif
321
[email protected]1a82f7372013-12-06 12:46:52322const Experiment::Choice kNumRasterThreadsChoices[] = {
323 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
[email protected]00d92d32014-01-23 09:46:50324 { IDS_FLAGS_NUM_RASTER_THREADS_ONE, switches::kNumRasterThreads, "1" },
325 { IDS_FLAGS_NUM_RASTER_THREADS_TWO, switches::kNumRasterThreads, "2" },
326 { IDS_FLAGS_NUM_RASTER_THREADS_THREE, switches::kNumRasterThreads, "3" },
327 { IDS_FLAGS_NUM_RASTER_THREADS_FOUR, switches::kNumRasterThreads, "4" }
[email protected]1a82f7372013-12-06 12:46:52328};
329
Stephen Whited0bdd9422015-04-03 00:29:35330const Experiment::Choice kGpuRasterizationMSAASampleCountChoices[] = {
331 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT,
332 "",
333 "" },
334 { IDS_FLAGS_GPU_RASTERIZATION_MSAA_SAMPLE_COUNT_ZERO,
335 switches::kGpuRasterizationMSAASampleCount, "0" },
336 { IDS_FLAGS_GPU_RASTERIZATION_MSAA_SAMPLE_COUNT_TWO,
337 switches::kGpuRasterizationMSAASampleCount, "2" },
338 { IDS_FLAGS_GPU_RASTERIZATION_MSAA_SAMPLE_COUNT_FOUR,
339 switches::kGpuRasterizationMSAASampleCount, "4" },
340 { IDS_FLAGS_GPU_RASTERIZATION_MSAA_SAMPLE_COUNT_EIGHT,
341 switches::kGpuRasterizationMSAASampleCount, "8" },
342 { IDS_FLAGS_GPU_RASTERIZATION_MSAA_SAMPLE_COUNT_SIXTEEN,
343 switches::kGpuRasterizationMSAASampleCount, "16" },
344};
345
[email protected]a23530d2014-03-11 06:04:14346const Experiment::Choice kEnableGpuRasterizationChoices[] = {
347 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
348 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
349 switches::kEnableGpuRasterization, "" },
350 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
351 switches::kDisableGpuRasterization, "" },
352 { IDS_FLAGS_FORCE_GPU_RASTERIZATION,
353 switches::kForceGpuRasterization, "" },
354};
355
skuhnef6f74b02015-01-22 00:05:34356#if defined(OS_CHROMEOS)
357const Experiment::Choice kMemoryPressureThresholdChoices[] = {
xdaif735c7a2015-02-12 02:08:34358 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
359 { IDS_FLAGS_CONSERVATIVE_THRESHOLDS,
360 chromeos::switches::kMemoryPressureThresholds,
361 chromeos::switches::kConservativeThreshold },
362 { IDS_FLAGS_AGGRESSIVE_CACHE_DISCARD_THRESHOLDS,
363 chromeos::switches::kMemoryPressureThresholds,
364 chromeos::switches::kAggressiveCacheDiscardThreshold },
365 { IDS_FLAGS_AGGRESSIVE_TAB_DISCARD_THRESHOLDS,
366 chromeos::switches::kMemoryPressureThresholds,
367 chromeos::switches::kAggressiveTabDiscardThreshold },
368 { IDS_FLAGS_AGGRESSIVE_THRESHOLDS,
369 chromeos::switches::kMemoryPressureThresholds,
370 chromeos::switches::kAggressiveThreshold },
skuhnef6f74b02015-01-22 00:05:34371};
372#endif
373
[email protected]6f8ede32014-05-09 13:58:45374const Experiment::Choice kExtensionContentVerificationChoices[] = {
375 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
376 { IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_BOOTSTRAP,
[email protected]8bb62162014-06-23 09:45:50377 switches::kExtensionContentVerification,
378 switches::kExtensionContentVerificationBootstrap },
[email protected]6f8ede32014-05-09 13:58:45379 { IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_ENFORCE,
[email protected]8bb62162014-06-23 09:45:50380 switches::kExtensionContentVerification,
381 switches::kExtensionContentVerificationEnforce },
[email protected]6f8ede32014-05-09 13:58:45382 { IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_ENFORCE_STRICT,
[email protected]8bb62162014-06-23 09:45:50383 switches::kExtensionContentVerification,
384 switches::kExtensionContentVerificationEnforceStrict },
[email protected]6f8ede32014-05-09 13:58:45385};
386
[email protected]c5bbe0e2014-08-01 23:23:30387// Note that the value is specified in seconds (where 0 is equivalent to
388// disabled).
389const Experiment::Choice kRememberCertificateErrorDecisionsChoices[] = {
390 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
391 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
392 switches::kRememberCertErrorDecisions,
393 "-1" },
394 { IDS_REMEMBER_CERTIFICATE_ERROR_DECISION_CHOICE_ONE_DAY,
395 switches::kRememberCertErrorDecisions,
396 "86400" },
397 { IDS_REMEMBER_CERTIFICATE_ERROR_DECISION_CHOICE_THREE_DAYS,
398 switches::kRememberCertErrorDecisions,
399 "259200" },
400 { IDS_REMEMBER_CERTIFICATE_ERROR_DECISION_CHOICE_ONE_WEEK,
401 switches::kRememberCertErrorDecisions,
402 "604800" },
403 { IDS_REMEMBER_CERTIFICATE_ERROR_DECISION_CHOICE_ONE_MONTH,
404 switches::kRememberCertErrorDecisions,
405 "2592000" },
406 { IDS_REMEMBER_CERTIFICATE_ERROR_DECISION_CHOICE_THREE_MONTHS,
407 switches::kRememberCertErrorDecisions,
408 "7776000" },
409};
410
[email protected]524dd702014-08-16 00:00:45411const Experiment::Choice kAutofillSyncCredentialChoices[] = {
412 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", ""},
413 { IDS_ALLOW_AUTOFILL_SYNC_CREDENTIAL,
414 password_manager::switches::kAllowAutofillSyncCredential, ""},
415 { IDS_DISALLOW_AUTOFILL_SYNC_CREDENTIAL_FOR_REAUTH,
416 password_manager::switches::kDisallowAutofillSyncCredentialForReauth, ""},
417 { IDS_DISALLOW_AUTOFILL_SYNC_CREDENTIAL,
418 password_manager::switches::kDisallowAutofillSyncCredential, ""},
419};
420
agl0a4a16342014-11-05 04:17:05421const Experiment::Choice kSSLVersionMinChoices[] = {
422 { IDS_FLAGS_SSL_VERSION_DEFAULT, "", "" },
423 { IDS_FLAGS_SSL_VERSION_SSLV3, switches::kSSLVersionMin,
424 switches::kSSLVersionSSLv3 },
425 { IDS_FLAGS_SSL_VERSION_TLSV1, switches::kSSLVersionMin,
426 switches::kSSLVersionTLSv1 },
427 { IDS_FLAGS_SSL_VERSION_TLSV11, switches::kSSLVersionMin,
428 switches::kSSLVersionTLSv11 },
429 { IDS_FLAGS_SSL_VERSION_TLSV12, switches::kSSLVersionMin,
430 switches::kSSLVersionTLSv12 },
431};
432
jwwc3ab6e7b2014-12-23 18:16:18433const Experiment::Choice kFillOnAccountSelectChoices[] = {
434 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
435 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
436 autofill::switches::kDisableFillOnAccountSelect, "" },
437 { IDS_FLAGS_FILL_ON_ACCOUNT_SELECT_ENABLE_HIGHLIGHTING,
438 autofill::switches::kEnableFillOnAccountSelect, "" },
439 { IDS_FLAGS_FILL_ON_ACCOUNT_SELECT_ENABLE_NO_HIGHLIGHTING,
440 autofill::switches::kEnableFillOnAccountSelectNoHighlighting, "" },
441};
442
bruthig37f9cad02015-03-12 22:28:50443#if defined(USE_ASH)
444const Experiment::Choice kAshScreenRotationAnimationChoices[] = {
bruthig2ce3f232015-04-02 15:21:35445 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
446 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
447 ash::switches::kAshEnableScreenRotationAnimation,
448 "none" },
bruthig37f9cad02015-03-12 22:28:50449 { IDS_ASH_SCREEN_ROTATION_ANIMATION_PARTIAL_ROTATION,
bruthig2ce3f232015-04-02 15:21:35450 ash::switches::kAshEnableScreenRotationAnimation,
451 "partial-rotation" },
bruthig37f9cad02015-03-12 22:28:50452 { IDS_ASH_SCREEN_ROTATION_ANIMATION_FULL_ROTATION,
bruthig2ce3f232015-04-02 15:21:35453 ash::switches::kAshEnableScreenRotationAnimation,
454 "full-rotation" }
bruthig37f9cad02015-03-12 22:28:50455};
456#endif
457
glevin6ac071f72015-04-07 21:47:32458#if defined(OS_CHROMEOS)
459const Experiment::Choice kDataSaverPromptChoices[] = {
460 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
461 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
462 chromeos::switches::kDisableDataSaverPrompt, "" },
463 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
464 chromeos::switches::kEnableDataSaverPrompt, "" },
465 { IDS_FLAGS_DATASAVER_PROMPT_DEMO_MODE,
466 chromeos::switches::kEnableDataSaverPrompt,
467 chromeos::switches::kDataSaverPromptDemoMode },
468};
bsheb67430e2015-04-30 14:02:11469
470const Experiment::Choice kFloatingVirtualKeyboardChoices[] = {
471 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
472 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
473 keyboard::switches::kFloatingVirtualKeyboard,
474 keyboard::switches::kFloatingVirtualKeyboardDisabled},
475 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
476 keyboard::switches::kFloatingVirtualKeyboard,
477 keyboard::switches::kFloatingVirtualKeyboardEnabled},
478};
rsadamb5040022015-05-06 21:20:31479
480const Experiment::Choice kGestureTypingChoices[] = {
481 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
482 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
483 keyboard::switches::kGestureTyping,
484 keyboard::switches::kGestureTypingDisabled},
485 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
486 keyboard::switches::kGestureTyping,
487 keyboard::switches::kGestureTypingEnabled},
488};
489
rsadamecb5ce9e2015-05-12 16:24:53490const Experiment::Choice kGestureEditingChoices[] = {
rsadamb5040022015-05-06 21:20:31491 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
492 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
rsadamecb5ce9e2015-05-12 16:24:53493 keyboard::switches::kGestureEditing,
494 keyboard::switches::kGestureEditingDisabled},
rsadamb5040022015-05-06 21:20:31495 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
rsadamecb5ce9e2015-05-12 16:24:53496 keyboard::switches::kGestureEditing,
497 keyboard::switches::kGestureEditingEnabled},
rsadamb5040022015-05-06 21:20:31498};
glevin6ac071f72015-04-07 21:47:32499#endif
500
treibe2082a0e2015-04-08 10:15:30501const Experiment::Choice kSupervisedUserSafeSitesChoices[] = {
502 { IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
503 { IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
504 switches::kSupervisedUserSafeSites,
505 "enabled" },
506 { IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
507 switches::kSupervisedUserSafeSites,
508 "disabled" },
509 { IDS_SUPERVISED_USER_SAFESITES_BLACKLIST_ONLY,
510 switches::kSupervisedUserSafeSites,
511 "blacklist-only" },
512 { IDS_SUPERVISED_USER_SAFESITES_ONLINE_CHECK_ONLY,
513 switches::kSupervisedUserSafeSites,
514 "online-check-only" }
515};
516
[email protected]4bc5050c2010-11-18 17:55:54517// RECORDING USER METRICS FOR FLAGS:
518// -----------------------------------------------------------------------------
519// The first line of the experiment is the internal name. If you'd like to
520// gather statistics about the usage of your flag, you should append a marker
521// comment to the end of the feature name, like so:
522// "my-special-feature", // FLAGS:RECORD_UMA
523//
[email protected]d8320fb62014-03-22 03:16:37524// After doing that, run
525// tools/metrics/actions/extract_actions.py
526// to add the metric to actions.xml (which will enable UMA to record your
527// feature flag), then update the <owner>s and <description> sections. Make sure
528// to include the actions.xml file when you upload your code for review!
[email protected]4bc5050c2010-11-18 17:55:54529//
[email protected]783d5bb2012-10-24 03:47:14530// After your feature has shipped under a flag, you can locate the metrics under
531// the action name AboutFlags_internal-action-name. Actions are recorded once
532// per startup, so you should divide this number by AboutFlags_StartupTick to
533// get a sense of usage. Note that this will not be the same as number of users
534// with a given feature enabled because users can quit and relaunch the
535// application multiple times over a given time interval. The dashboard also
536// shows you how many (metrics reporting) users have enabled the flag over the
537// last seven days. However, note that this is not the same as the number of
538// users who have the flag enabled, since enabling the flag happens once,
539// whereas running with the flag enabled happens until the user flips the flag
540// again.
[email protected]4bc5050c2010-11-18 17:55:54541
[email protected]8a6ff28d2010-12-02 16:35:19542// To add a new experiment add to the end of kExperiments. There are two
543// distinct types of experiments:
544// . SINGLE_VALUE: experiment is either on or off. Use the SINGLE_VALUE_TYPE
545// macro for this type supplying the command line to the macro.
[email protected]28e35af2011-02-09 12:56:22546// . MULTI_VALUE: a list of choices, the first of which should correspond to a
547// deactivated state for this lab (i.e. no command line option). To specify
548// this type of experiment use the macro MULTI_VALUE_TYPE supplying it the
549// array of choices.
[email protected]8a6ff28d2010-12-02 16:35:19550// See the documentation of Experiment for details on the fields.
551//
[email protected]4b66a7d2014-08-15 17:13:31552// Command-line switches must have entries in enum "LoginCustomFlags" in
553// histograms.xml. See note in histograms.xml and don't forget to run
554// AboutFlagsHistogramTest unit test to calculate and verify checksum.
555//
[email protected]8a6ff28d2010-12-02 16:35:19556// When adding a new choice, add it to the end of the list.
[email protected]ad2a3ded2010-08-27 13:19:05557const Experiment kExperiments[] = {
558 {
[email protected]96c6f4c2011-05-18 19:36:22559 "ignore-gpu-blacklist",
560 IDS_FLAGS_IGNORE_GPU_BLACKLIST_NAME,
561 IDS_FLAGS_IGNORE_GPU_BLACKLIST_DESCRIPTION,
562 kOsAll,
563 SINGLE_VALUE_TYPE(switches::kIgnoreGpuBlacklist)
564 },
[email protected]5b7033fc2013-12-07 22:32:07565#if defined(OS_WIN)
566 {
[email protected]5b263b6a2014-06-09 21:47:34567 "disable-direct-write",
568 IDS_FLAGS_DISABLE_DIRECT_WRITE_NAME,
569 IDS_FLAGS_DISABLE_DIRECT_WRITE_DESCRIPTION,
[email protected]5b7033fc2013-12-07 22:32:07570 kOsWin,
[email protected]5b263b6a2014-06-09 21:47:34571 SINGLE_VALUE_TYPE(switches::kDisableDirectWrite)
[email protected]5b7033fc2013-12-07 22:32:07572 },
wfhd6723342014-12-11 19:50:48573 {
574 "enable-win32k-renderer-lockdown",
575 IDS_FLAGS_ENABLE_WIN32K_RENDERER_LOCKDOWN_NAME,
576 IDS_FLAGS_ENABLE_WIN32K_RENDERER_LOCKDOWN_DESCRIPTION,
577 kOsWin,
578 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableWin32kRendererLockDown,
579 switches::kDisableWin32kRendererLockDown)
580 },
[email protected]5b7033fc2013-12-07 22:32:07581#endif
[email protected]8b1c3c72013-01-25 01:48:43582 {
[email protected]2b608752013-05-01 03:34:36583 "enable-experimental-canvas-features",
584 IDS_FLAGS_ENABLE_EXPERIMENTAL_CANVAS_FEATURES_NAME,
585 IDS_FLAGS_ENABLE_EXPERIMENTAL_CANVAS_FEATURES_DESCRIPTION,
586 kOsAll,
587 SINGLE_VALUE_TYPE(switches::kEnableExperimentalCanvasFeatures)
588 },
589 {
[email protected]81c64af62012-06-06 20:15:52590 "disable-accelerated-2d-canvas",
591 IDS_FLAGS_DISABLE_ACCELERATED_2D_CANVAS_NAME,
592 IDS_FLAGS_DISABLE_ACCELERATED_2D_CANVAS_DESCRIPTION,
593 kOsAll,
594 SINGLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas)
595 },
596 {
[email protected]72d37352014-07-24 02:34:41597 "enable-display-list-2d-canvas",
598 IDS_FLAGS_ENABLE_DISPLAY_LIST_2D_CANVAS_NAME,
599 IDS_FLAGS_ENABLE_DISPLAY_LIST_2D_CANVAS_DESCRIPTION,
600 kOsAll,
asvitkinebff63b22014-11-25 01:03:52601 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableDisplayList2dCanvas,
602 switches::kDisableDisplayList2dCanvas)
[email protected]72d37352014-07-24 02:34:41603 },
604 {
[email protected]5963b772011-02-09 22:55:38605 "composited-layer-borders",
606 IDS_FLAGS_COMPOSITED_LAYER_BORDERS,
607 IDS_FLAGS_COMPOSITED_LAYER_BORDERS_DESCRIPTION,
608 kOsAll,
[email protected]4d5e6762013-03-19 18:46:57609 SINGLE_VALUE_TYPE(cc::switches::kShowCompositedLayerBorders)
[email protected]5963b772011-02-09 22:55:38610 },
611 {
[email protected]a8f1eaa2011-03-07 19:00:58612 "show-fps-counter",
613 IDS_FLAGS_SHOW_FPS_COUNTER,
614 IDS_FLAGS_SHOW_FPS_COUNTER_DESCRIPTION,
615 kOsAll,
[email protected]4d5e6762013-03-19 18:46:57616 SINGLE_VALUE_TYPE(cc::switches::kShowFPSCounter)
[email protected]a8f1eaa2011-03-07 19:00:58617 },
[email protected]8ff7f342011-05-25 01:49:47618 {
[email protected]deaba6d52011-09-23 14:47:12619 "disable-webgl",
620 IDS_FLAGS_DISABLE_WEBGL_NAME,
621 IDS_FLAGS_DISABLE_WEBGL_DESCRIPTION,
[email protected]6c7784e2013-08-01 22:41:28622 kOsAll,
[email protected]deaba6d52011-09-23 14:47:12623 SINGLE_VALUE_TYPE(switches::kDisableExperimentalWebGL)
624 },
wfh0539f2f52015-01-21 14:36:46625#if defined(OS_WIN) || defined(OS_MACOSX)
626 {
627 "enable-npapi",
628 IDS_FLAGS_ENABLE_NPAPI_NAME,
629 IDS_FLAGS_ENABLE_NPAPI_DESCRIPTION,
630 kOsWin | kOsMac,
631 SINGLE_VALUE_TYPE(switches::kEnableNpapi)
632 },
633#endif
[email protected]09096e02012-05-24 11:12:04634 {
[email protected]ce585bf2013-03-14 16:25:16635 "disable-webrtc",
636 IDS_FLAGS_DISABLE_WEBRTC_NAME,
637 IDS_FLAGS_DISABLE_WEBRTC_DESCRIPTION,
[email protected]d9da9582013-01-31 04:59:05638 kOsAndroid,
639#if defined(OS_ANDROID)
[email protected]ce585bf2013-03-14 16:25:16640 SINGLE_VALUE_TYPE(switches::kDisableWebRTC)
[email protected]d9da9582013-01-31 04:59:05641#else
642 SINGLE_VALUE_TYPE("")
643#endif
644 },
[email protected]5e2bc8c2013-05-28 22:59:57645#if defined(ENABLE_WEBRTC)
[email protected]d816ddc2013-05-23 14:28:30646 {
[email protected]fdf631e2013-09-13 09:06:07647 "disable-webrtc-hw-decoding",
648 IDS_FLAGS_DISABLE_WEBRTC_HW_DECODING_NAME,
649 IDS_FLAGS_DISABLE_WEBRTC_HW_DECODING_DESCRIPTION,
[email protected]6442b022013-12-05 11:09:05650 kOsAndroid | kOsCrOS,
[email protected]fdf631e2013-09-13 09:06:07651 SINGLE_VALUE_TYPE(switches::kDisableWebRtcHWDecoding)
652 },
653 {
[email protected]96cbf422013-09-11 12:42:22654 "disable-webrtc-hw-encoding",
655 IDS_FLAGS_DISABLE_WEBRTC_HW_ENCODING_NAME,
656 IDS_FLAGS_DISABLE_WEBRTC_HW_ENCODING_DESCRIPTION,
[email protected]6998f01f22013-12-04 09:27:57657 kOsAndroid | kOsCrOS,
[email protected]96cbf422013-09-11 12:42:22658 SINGLE_VALUE_TYPE(switches::kDisableWebRtcHWEncoding)
659 },
pthatcherb3b993a2015-03-13 01:04:04660 {
661 "enable-webrtc-stun-origin",
662 IDS_FLAGS_ENABLE_WEBRTC_STUN_ORIGIN_NAME,
663 IDS_FLAGS_ENABLE_WEBRTC_STUN_ORIGIN_DESCRIPTION,
664 kOsAll,
665 SINGLE_VALUE_TYPE(switches::kEnableWebRtcStunOrigin)
666 },
[email protected]5e2bc8c2013-05-28 22:59:57667#endif
[email protected]34cb5292013-04-15 06:06:31668#if defined(OS_ANDROID)
669 {
[email protected]7b8a31632013-06-13 22:42:37670 "disable-webaudio",
671 IDS_FLAGS_DISABLE_WEBAUDIO_NAME,
672 IDS_FLAGS_DISABLE_WEBAUDIO_DESCRIPTION,
[email protected]34cb5292013-04-15 06:06:31673 kOsAndroid,
[email protected]7b8a31632013-06-13 22:42:37674 SINGLE_VALUE_TYPE(switches::kDisableWebAudio)
[email protected]34cb5292013-04-15 06:06:31675 },
676#endif
[email protected]d33d2222014-06-04 15:39:58677 // Native client is compiled out when DISABLE_NACL is defined.
678#if !defined(DISABLE_NACL)
[email protected]2fe15fcb2010-10-21 20:39:53679 {
[email protected]e3791ce92011-08-09 01:03:32680 "enable-nacl", // FLAGS:RECORD_UMA
[email protected]4ff87d202010-11-06 01:28:40681 IDS_FLAGS_ENABLE_NACL_NAME,
682 IDS_FLAGS_ENABLE_NACL_DESCRIPTION,
[email protected]d33d2222014-06-04 15:39:58683 kOsAll,
[email protected]8a6ff28d2010-12-02 16:35:19684 SINGLE_VALUE_TYPE(switches::kEnableNaCl)
[email protected]4ff87d202010-11-06 01:28:40685 },
686 {
[email protected]9addd1c2012-09-15 14:28:24687 "enable-nacl-debug", // FLAGS:RECORD_UMA
688 IDS_FLAGS_ENABLE_NACL_DEBUG_NAME,
689 IDS_FLAGS_ENABLE_NACL_DEBUG_DESCRIPTION,
[email protected]f3cd6802013-01-23 20:25:56690 kOsDesktop,
[email protected]9addd1c2012-09-15 14:28:24691 SINGLE_VALUE_TYPE(switches::kEnableNaClDebug)
[email protected]401b90792012-05-30 11:41:13692 },
693 {
[email protected]66f409c2012-10-04 20:59:04694 "nacl-debug-mask", // FLAGS:RECORD_UMA
695 IDS_FLAGS_NACL_DEBUG_MASK_NAME,
696 IDS_FLAGS_NACL_DEBUG_MASK_DESCRIPTION,
[email protected]f3cd6802013-01-23 20:25:56697 kOsDesktop,
[email protected]66f409c2012-10-04 20:59:04698 MULTI_VALUE_TYPE(kNaClDebugMaskChoices)
699 },
[email protected]d33d2222014-06-04 15:39:58700#endif
thestigb012bc3d2014-09-18 22:57:13701#if defined(ENABLE_EXTENSIONS)
[email protected]66f409c2012-10-04 20:59:04702 {
[email protected]4bc5050c2010-11-18 17:55:54703 "extension-apis", // FLAGS:RECORD_UMA
[email protected]11dd68cd52010-11-12 01:15:32704 IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_NAME,
705 IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_DESCRIPTION,
[email protected]f3cd6802013-01-23 20:25:56706 kOsDesktop,
[email protected]c8d02992013-07-31 22:16:51707 SINGLE_VALUE_TYPE(extensions::switches::kEnableExperimentalExtensionApis)
[email protected]11dd68cd52010-11-12 01:15:32708 },
[email protected]3627b06d2010-11-12 16:36:16709 {
[email protected]ac2e2acd2013-03-21 12:57:29710 "extensions-on-chrome-urls",
711 IDS_FLAGS_EXTENSIONS_ON_CHROME_URLS_NAME,
712 IDS_FLAGS_EXTENSIONS_ON_CHROME_URLS_DESCRIPTION,
713 kOsAll,
[email protected]49d9b142013-07-19 08:50:27714 SINGLE_VALUE_TYPE(extensions::switches::kExtensionsOnChromeURLs)
[email protected]ac2e2acd2013-03-21 12:57:29715 },
thestigb012bc3d2014-09-18 22:57:13716#endif
[email protected]ac2e2acd2013-03-21 12:57:29717 {
[email protected]88c92012013-07-02 11:56:34718 "enable-fast-unload",
719 IDS_FLAGS_ENABLE_FAST_UNLOAD_NAME,
720 IDS_FLAGS_ENABLE_FAST_UNLOAD_DESCRIPTION,
721 kOsAll,
722 SINGLE_VALUE_TYPE(switches::kEnableFastUnload)
723 },
thestigb012bc3d2014-09-18 22:57:13724#if defined(ENABLE_EXTENSIONS)
[email protected]88c92012013-07-02 11:56:34725 {
[email protected]1f4da9e2013-06-27 05:23:44726 "enable-app-window-controls",
727 IDS_FLAGS_ENABLE_APP_WINDOW_CONTROLS_NAME,
728 IDS_FLAGS_ENABLE_APP_WINDOW_CONTROLS_DESCRIPTION,
729 kOsDesktop,
hashimotof784afd2014-09-05 02:38:31730 SINGLE_VALUE_TYPE(extensions::switches::kEnableAppWindowControls)
[email protected]1f4da9e2013-06-27 05:23:44731 },
thestigb012bc3d2014-09-18 22:57:13732#endif
[email protected]1f4da9e2013-06-27 05:23:44733 {
[email protected]80bd24e2010-11-30 09:34:38734 "disable-hyperlink-auditing",
735 IDS_FLAGS_DISABLE_HYPERLINK_AUDITING_NAME,
736 IDS_FLAGS_DISABLE_HYPERLINK_AUDITING_DESCRIPTION,
737 kOsAll,
[email protected]8a6ff28d2010-12-02 16:35:19738 SINGLE_VALUE_TYPE(switches::kNoPings)
[email protected]feb28fef2010-12-01 10:52:51739 },
[email protected]333bdc52013-07-16 00:37:04740#if defined(OS_ANDROID)
741 {
[email protected]26d1b4d2014-02-08 02:42:17742 "contextual-search",
743 IDS_FLAGS_ENABLE_CONTEXTUAL_SEARCH,
744 IDS_FLAGS_ENABLE_CONTEXTUAL_SEARCH_DESCRIPTION,
745 kOsAndroid,
[email protected]41d32bb2014-05-30 08:26:05746 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableContextualSearch,
747 switches::kDisableContextualSearch)
[email protected]26d1b4d2014-02-08 02:42:17748 },
[email protected]333bdc52013-07-16 00:37:04749#endif
[email protected]8cc9e532013-05-06 21:01:47750 {
[email protected]3eb5728c2011-06-20 22:32:24751 "show-autofill-type-predictions",
752 IDS_FLAGS_SHOW_AUTOFILL_TYPE_PREDICTIONS_NAME,
753 IDS_FLAGS_SHOW_AUTOFILL_TYPE_PREDICTIONS_DESCRIPTION,
754 kOsAll,
[email protected]e217c5632013-04-12 19:11:48755 SINGLE_VALUE_TYPE(autofill::switches::kShowAutofillTypePredictions)
[email protected]3eb5728c2011-06-20 22:32:24756 },
[email protected]bff4d3e2011-06-21 23:58:52757 {
[email protected]a22ebd812011-06-23 00:05:39758 "enable-smooth-scrolling", // FLAGS:RECORD_UMA
759 IDS_FLAGS_ENABLE_SMOOTH_SCROLLING_NAME,
760 IDS_FLAGS_ENABLE_SMOOTH_SCROLLING_DESCRIPTION,
761 // Can't expose the switch unless the code is compiled in.
[email protected]554b7062011-09-03 03:09:40762 // On by default for the Mac (different implementation in WebKit).
[email protected]a5a5aaf2013-12-19 02:10:10763 kOsLinux,
[email protected]a22ebd812011-06-23 00:05:39764 SINGLE_VALUE_TYPE(switches::kEnableSmoothScrolling)
765 },
[email protected]54c8d282014-01-24 17:31:08766#if defined(USE_AURA) || defined(OS_LINUX)
[email protected]81a6b0b2011-06-24 17:55:40767 {
[email protected]54c8d282014-01-24 17:31:08768 "overlay-scrollbars",
[email protected]23eecbd02013-09-19 18:13:37769 IDS_FLAGS_ENABLE_OVERLAY_SCROLLBARS_NAME,
770 IDS_FLAGS_ENABLE_OVERLAY_SCROLLBARS_DESCRIPTION,
771 // Uses the system preference on Mac (a different implementation).
772 // On Android, this is always enabled.
[email protected]54c8d282014-01-24 17:31:08773 kOsLinux | kOsCrOS | kOsWin,
asvitkinebff63b22014-11-25 01:03:52774 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOverlayScrollbar,
775 switches::kDisableOverlayScrollbar)
[email protected]23eecbd02013-09-19 18:13:37776 },
[email protected]54c8d282014-01-24 17:31:08777#endif
[email protected]23eecbd02013-09-19 18:13:37778 {
[email protected]7e7a28092011-12-09 22:24:55779 "enable-panels",
780 IDS_FLAGS_ENABLE_PANELS_NAME,
781 IDS_FLAGS_ENABLE_PANELS_DESCRIPTION,
[email protected]f3cd6802013-01-23 20:25:56782 kOsDesktop,
[email protected]7e7a28092011-12-09 22:24:55783 SINGLE_VALUE_TYPE(switches::kEnablePanels)
[email protected]73fb1fc52011-07-09 00:06:54784 },
[email protected]e3749d12011-07-25 22:22:12785 {
[email protected]27c14f02012-06-22 17:29:58786 // See http://crbug.com/120416 for how to remove this flag.
[email protected]6474b112012-05-04 19:35:27787 "save-page-as-mhtml", // FLAGS:RECORD_UMA
788 IDS_FLAGS_SAVE_PAGE_AS_MHTML_NAME,
789 IDS_FLAGS_SAVE_PAGE_AS_MHTML_DESCRIPTION,
790 kOsMac | kOsWin | kOsLinux,
791 SINGLE_VALUE_TYPE(switches::kSavePageAsMHTML)
792 },
793 {
[email protected]903e63382013-06-01 00:40:58794 "enable-quic",
795 IDS_FLAGS_ENABLE_QUIC_NAME,
796 IDS_FLAGS_ENABLE_QUIC_DESCRIPTION,
797 kOsAll,
798 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableQuic,
799 switches::kDisableQuic)
800 },
801 {
[email protected]c3a47f8d2014-04-15 14:39:28802 "disable-media-source",
803 IDS_FLAGS_DISABLE_MEDIA_SOURCE_NAME,
804 IDS_FLAGS_DISABLE_MEDIA_SOURCE_DESCRIPTION,
[email protected]ec9d0532012-03-21 05:55:32805 kOsAll,
[email protected]c3a47f8d2014-04-15 14:39:28806 SINGLE_VALUE_TYPE(switches::kDisableMediaSource)
[email protected]722b4d484f2013-10-08 20:33:59807 },
808 {
ddorwin73bdb0b2015-01-26 23:03:09809 "disable-encrypted-media",
810 IDS_FLAGS_DISABLE_ENCRYPTED_MEDIA_NAME,
811 IDS_FLAGS_DISABLE_ENCRYPTED_MEDIA_DESCRIPTION,
[email protected]ddb0f262013-07-26 13:16:50812 kOsAll,
ddorwin73bdb0b2015-01-26 23:03:09813 SINGLE_VALUE_TYPE(switches::kDisableEncryptedMedia)
[email protected]16c242d2013-05-31 23:56:47814 },
815 {
[email protected]e76d92f2013-09-26 20:03:35816 "disable-prefixed-encrypted-media",
[email protected]16c242d2013-05-31 23:56:47817 IDS_FLAGS_DISABLE_PREFIXED_ENCRYPTED_MEDIA_NAME,
818 IDS_FLAGS_DISABLE_PREFIXED_ENCRYPTED_MEDIA_DESCRIPTION,
[email protected]ddb0f262013-07-26 13:16:50819 kOsAll,
[email protected]e76d92f2013-09-26 20:03:35820 SINGLE_VALUE_TYPE(switches::kDisablePrefixedEncryptedMedia)
[email protected]9f5b7822012-04-18 23:39:03821 },
[email protected]ce3934bb2013-09-10 02:02:56822#if defined(OS_ANDROID)
823 {
[email protected]3c56ec12013-09-25 02:03:42824 "disable-infobar-for-protected-media-identifier",
825 IDS_FLAGS_DISABLE_INFOBAR_FOR_PROTECTED_MEDIA_IDENTIFIER_NAME,
826 IDS_FLAGS_DISABLE_INFOBAR_FOR_PROTECTED_MEDIA_IDENTIFIER_DESCRIPTION,
827 kOsAndroid,
828 SINGLE_VALUE_TYPE(switches::kDisableInfobarForProtectedMediaIdentifier)
829 },
[email protected]ce3934bb2013-09-10 02:02:56830#endif // defined(OS_ANDROID)
[email protected]d21ead42013-06-24 06:35:06831 {
dslomova893e972014-12-05 09:39:57832 "disable-javascript-harmony-shipping",
833 IDS_FLAGS_DISABLE_JAVASCRIPT_HARMONY_SHIPPING_NAME,
834 IDS_FLAGS_DISABLE_JAVASCRIPT_HARMONY_SHIPPING_DESCRIPTION,
835 kOsAll,
836 SINGLE_VALUE_TYPE(switches::kDisableJavaScriptHarmonyShipping)
837 },
838 {
[email protected]bf88c032011-12-22 19:05:47839 "enable-javascript-harmony",
840 IDS_FLAGS_ENABLE_JAVASCRIPT_HARMONY_NAME,
841 IDS_FLAGS_ENABLE_JAVASCRIPT_HARMONY_DESCRIPTION,
842 kOsAll,
erikcorryb251cb92014-09-25 23:48:51843 SINGLE_VALUE_TYPE(switches::kJavaScriptHarmony)
[email protected]bf88c032011-12-22 19:05:47844 },
[email protected]7e7f378a2012-01-05 14:35:37845 {
[email protected]88864db2012-01-18 20:56:35846 "disable-software-rasterizer",
847 IDS_FLAGS_DISABLE_SOFTWARE_RASTERIZER_NAME,
848 IDS_FLAGS_DISABLE_SOFTWARE_RASTERIZER_DESCRIPTION,
849#if defined(ENABLE_SWIFTSHADER)
850 kOsAll,
851#else
852 0,
853#endif
854 SINGLE_VALUE_TYPE(switches::kDisableSoftwareRasterizer)
855 },
[email protected]15a5d722012-01-23 09:11:14856 {
[email protected]d1ddf8c52014-02-06 22:09:31857 "enable-gpu-rasterization",
858 IDS_FLAGS_ENABLE_GPU_RASTERIZATION_NAME,
859 IDS_FLAGS_ENABLE_GPU_RASTERIZATION_DESCRIPTION,
hendrikwe62dda562014-12-17 19:28:15860 kOsAll,
[email protected]a23530d2014-03-11 06:04:14861 MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)
[email protected]d1ddf8c52014-02-06 22:09:31862 },
863 {
Stephen Whited0bdd9422015-04-03 00:29:35864 "gpu-rasterization-msaa-sample-count",
865 IDS_FLAGS_GPU_RASTERIZATION_MSAA_SAMPLE_COUNT_NAME,
866 IDS_FLAGS_GPU_RASTERIZATION_MSAA_SAMPLE_COUNT_DESCRIPTION,
867 kOsAll,
868 MULTI_VALUE_TYPE(kGpuRasterizationMSAASampleCountChoices)
869 },
870 {
pdrcd73ed362015-03-31 22:51:58871 "enable-slimming-paint",
872 IDS_FLAGS_ENABLE_SLIMMING_PAINT_NAME,
873 IDS_FLAGS_ENABLE_SLIMMING_PAINT_DESCRIPTION,
874 kOsAll,
875 SINGLE_VALUE_TYPE(switches::kEnableSlimmingPaint)
876 },
877 {
[email protected]c1b18ea2013-07-10 13:01:16878 "enable-experimental-web-platform-features",
879 IDS_FLAGS_EXPERIMENTAL_WEB_PLATFORM_FEATURES_NAME,
880 IDS_FLAGS_EXPERIMENTAL_WEB_PLATFORM_FEATURES_DESCRIPTION,
[email protected]d2edc6702012-01-30 09:13:16881 kOsAll,
[email protected]c1b18ea2013-07-10 13:01:16882 SINGLE_VALUE_TYPE(switches::kEnableExperimentalWebPlatformFeatures)
[email protected]ca7a3d792012-03-02 15:55:49883 },
884 {
[email protected]3e8befc2012-03-13 01:17:03885 "disable-ntp-other-sessions-menu",
[email protected]156f966332012-02-29 00:03:16886 IDS_FLAGS_NTP_OTHER_SESSIONS_MENU_NAME,
887 IDS_FLAGS_NTP_OTHER_SESSIONS_MENU_DESCRIPTION,
[email protected]f3cd6802013-01-23 20:25:56888 kOsDesktop,
[email protected]3e8befc2012-03-13 01:17:03889 SINGLE_VALUE_TYPE(switches::kDisableNTPOtherSessionsMenu)
[email protected]156f966332012-02-29 00:03:16890 },
[email protected]184ec592012-03-01 11:54:28891 {
892 "enable-devtools-experiments",
893 IDS_FLAGS_ENABLE_DEVTOOLS_EXPERIMENTS_NAME,
894 IDS_FLAGS_ENABLE_DEVTOOLS_EXPERIMENTS_DESCRIPTION,
[email protected]f3cd6802013-01-23 20:25:56895 kOsDesktop,
[email protected]184ec592012-03-01 11:54:28896 SINGLE_VALUE_TYPE(switches::kEnableDevToolsExperiments)
897 },
[email protected]76d1854e2012-03-02 23:57:44898 {
[email protected]2fefdb32013-02-26 14:28:10899 "silent-debugger-extension-api",
900 IDS_FLAGS_SILENT_DEBUGGER_EXTENSION_API_NAME,
901 IDS_FLAGS_SILENT_DEBUGGER_EXTENSION_API_DESCRIPTION,
902 kOsDesktop,
903 SINGLE_VALUE_TYPE(switches::kSilentDebuggerExtensionAPI)
904 },
oshima66a9f962014-11-07 20:01:16905#if defined(ENABLE_SPELLCHECK)
[email protected]2fefdb32013-02-26 14:28:10906 {
[email protected]1dbaf5e2012-11-30 05:51:32907 "spellcheck-autocorrect",
908 IDS_FLAGS_SPELLCHECK_AUTOCORRECT,
909 IDS_FLAGS_SPELLCHECK_AUTOCORRECT_DESCRIPTION,
910 kOsWin | kOsLinux | kOsCrOS,
911 SINGLE_VALUE_TYPE(switches::kEnableSpellingAutoCorrect)
912 },
oshima66a9f962014-11-07 20:01:16913#endif
[email protected]1dbaf5e2012-11-30 05:51:32914 {
[email protected]e27137282013-06-20 02:38:35915 "enable-scroll-prediction",
916 IDS_FLAGS_ENABLE_SCROLL_PREDICTION_NAME,
917 IDS_FLAGS_ENABLE_SCROLL_PREDICTION_DESCRIPTION,
918 kOsDesktop,
919 SINGLE_VALUE_TYPE(switches::kEnableScrollPrediction)
920 },
921 {
[email protected]d7932532012-11-21 21:10:31922 "touch-events",
923 IDS_TOUCH_EVENTS_NAME,
924 IDS_TOUCH_EVENTS_DESCRIPTION,
[email protected]f3cd6802013-01-23 20:25:56925 kOsDesktop,
[email protected]d7932532012-11-21 21:10:31926 MULTI_VALUE_TYPE(kTouchEventsChoices)
927 },
928 {
[email protected]b9c96ff2012-11-26 22:24:40929 "disable-touch-adjustment",
930 IDS_DISABLE_TOUCH_ADJUSTMENT_NAME,
931 IDS_DISABLE_TOUCH_ADJUSTMENT_DESCRIPTION,
zeeshanqcf855b02014-09-25 18:09:49932 kOsWin | kOsLinux | kOsCrOS | kOsAndroid,
[email protected]b9c96ff2012-11-26 22:24:40933 SINGLE_VALUE_TYPE(switches::kDisableTouchAdjustment)
934 },
[email protected]0b60afa2012-04-19 17:36:39935#if defined(OS_CHROMEOS)
936 {
[email protected]81f89e92014-02-21 14:27:35937 "network-portal-notification",
938 IDS_FLAGS_NETWORK_PORTAL_NOTIFICATION_NAME,
939 IDS_FLAGS_NETWORK_PORTAL_NOTIFICATION_DESCRIPTION,
940 kOsCrOS,
941 ENABLE_DISABLE_VALUE_TYPE(
942 chromeos::switches::kEnableNetworkPortalNotification,
943 chromeos::switches::kDisableNetworkPortalNotification)
944 },
[email protected]0b60afa2012-04-19 17:36:39945#endif
[email protected]79be6d32012-04-24 20:47:44946 {
[email protected]8d68a3e02013-01-12 15:57:10947 "enable-download-resumption",
948 IDS_FLAGS_ENABLE_DOWNLOAD_RESUMPTION_NAME,
949 IDS_FLAGS_ENABLE_DOWNLOAD_RESUMPTION_DESCRIPTION,
[email protected]f3cd6802013-01-23 20:25:56950 kOsDesktop,
[email protected]8d68a3e02013-01-12 15:57:10951 SINGLE_VALUE_TYPE(switches::kEnableDownloadResumption)
952 },
yoshikif42d8fc2015-03-04 20:07:50953 {
954 "enable-download-notification",
955 IDS_FLAGS_ENABLE_DOWNLOAD_NOTIFICATION_NAME,
956 IDS_FLAGS_ENABLE_DOWNLOAD_NOTIFICATION_DESCRIPTION,
957 kOsCrOS,
958 SINGLE_VALUE_TYPE(switches::kEnableDownloadNotification)
959 },
[email protected]67fe3642014-08-05 00:00:42960#if defined(ENABLE_PLUGINS)
[email protected]8d68a3e02013-01-12 15:57:10961 {
[email protected]9a5940d2012-04-27 19:16:23962 "allow-nacl-socket-api",
963 IDS_FLAGS_ALLOW_NACL_SOCKET_API_NAME,
964 IDS_FLAGS_ALLOW_NACL_SOCKET_API_DESCRIPTION,
[email protected]f3cd6802013-01-23 20:25:56965 kOsDesktop,
[email protected]9a5940d2012-04-27 19:16:23966 SINGLE_VALUE_TYPE_AND_VALUE(switches::kAllowNaClSocketAPI, "*")
967 },
[email protected]d33d2222014-06-04 15:39:58968#endif
[email protected]190349fd2012-05-02 00:10:47969#if defined(OS_CHROMEOS)
970 {
971 "allow-touchpad-three-finger-click",
972 IDS_FLAGS_ALLOW_TOUCHPAD_THREE_FINGER_CLICK_NAME,
973 IDS_FLAGS_ALLOW_TOUCHPAD_THREE_FINGER_CLICK_DESCRIPTION,
974 kOsCrOS,
[email protected]2f2d6c32013-05-10 02:56:24975 SINGLE_VALUE_TYPE(chromeos::switches::kEnableTouchpadThreeFingerClick)
[email protected]190349fd2012-05-02 00:10:47976 },
xiyuana0e92b082014-09-15 22:24:08977 {
oshima94c24672015-05-01 16:06:14978 "ash-enable-unified-desktop",
979 IDS_FLAGS_ASH_ENABLE_UNIFIED_DESKTOP_NAME,
980 IDS_FLAGS_ASH_ENABLE_UNIFIED_DESKTOP_DESCRIPTION,
981 kOsCrOS,
982 SINGLE_VALUE_TYPE(ash::switches::kAshEnableUnifiedDesktop)
983 },
984 {
xiyuan47a05d02014-12-09 18:57:24985 "disable-easy-unlock",
986 IDS_FLAGS_DISABLE_EASY_UNLOCK_NAME,
987 IDS_FLAGS_DISABLE_EASY_UNLOCK_DESCRIPTION,
ishermane72a697a2014-11-26 05:08:21988 kOsCrOS,
xiyuan47a05d02014-12-09 18:57:24989 SINGLE_VALUE_TYPE(proximity_auth::switches::kDisableEasyUnlock)
ishermane72a697a2014-11-26 05:08:21990 },
991 {
isherman96bfc8d22014-11-06 00:42:46992 "enable-easy-unlock-proximity-detection",
993 IDS_FLAGS_ENABLE_EASY_UNLOCK_PROXIMITY_DETECTION_NAME,
994 IDS_FLAGS_ENABLE_EASY_UNLOCK_PROXIMITY_DETECTION_DESCRIPTION,
995 kOsCrOS,
996 SINGLE_VALUE_TYPE(proximity_auth::switches::kEnableProximityDetection)
997 },
msarda4c408ff2015-04-22 14:27:56998 {
999 "enable-easy-unlock-bluetooth-low-energy-detection",
1000 IDS_FLAGS_ENABLE_EASY_UNLOCK_BLUETOOTH_LOW_ENERGY_DISCOVERY_NAME,
1001 IDS_FLAGS_ENABLE_EASY_UNLOCK_BLUETOOTH_LOW_ENERGY_DISCOVERY_DESCRIPTION,
1002 kOsCrOS,
1003 SINGLE_VALUE_TYPE(
1004 proximity_auth::switches::kEnableBluetoothLowEnergyDiscovery)
1005 },
[email protected]190349fd2012-05-02 00:10:471006#endif
[email protected]53520b1b2012-05-07 21:43:371007#if defined(USE_ASH)
1008 {
[email protected]2ddf37b2013-04-20 01:15:581009 "disable-minimize-on-second-launcher-item-click",
1010 IDS_FLAGS_DISABLE_MINIMIZE_ON_SECOND_LAUNCHER_ITEM_CLICK_NAME,
1011 IDS_FLAGS_DISABLE_MINIMIZE_ON_SECOND_LAUNCHER_ITEM_CLICK_DESCRIPTION,
1012 kOsAll,
1013 SINGLE_VALUE_TYPE(switches::kDisableMinimizeOnSecondLauncherItemClick)
1014 },
1015 {
[email protected]73074742012-05-17 01:44:411016 "show-touch-hud",
1017 IDS_FLAGS_SHOW_TOUCH_HUD_NAME,
1018 IDS_FLAGS_SHOW_TOUCH_HUD_DESCRIPTION,
1019 kOsAll,
1020 SINGLE_VALUE_TYPE(ash::switches::kAshTouchHud)
1021 },
1022 {
[email protected]9f0940b62012-05-23 22:56:351023 "enable-pinch",
1024 IDS_FLAGS_ENABLE_PINCH_SCALE_NAME,
1025 IDS_FLAGS_ENABLE_PINCH_SCALE_DESCRIPTION,
[email protected]16ad47f82012-12-05 21:06:061026 kOsLinux | kOsWin | kOsCrOS,
[email protected]e4cd82e2013-04-10 15:20:381027 ENABLE_DISABLE_VALUE_TYPE(switches::kEnablePinch, switches::kDisablePinch),
1028 },
[email protected]adcdcdd02014-04-25 03:30:241029#endif // defined(USE_ASH)
[email protected]e4cd82e2013-04-10 15:20:381030 {
[email protected]de0aaed2013-05-27 18:16:431031 "enable-pinch-virtual-viewport",
1032 IDS_FLAGS_ENABLE_PINCH_VIRTUAL_VIEWPORT_NAME,
1033 IDS_FLAGS_ENABLE_PINCH_VIRTUAL_VIEWPORT_DESCRIPTION,
[email protected]fe89d822014-04-28 10:29:001034 kOsLinux | kOsWin | kOsCrOS | kOsAndroid,
1035 ENABLE_DISABLE_VALUE_TYPE(
1036 cc::switches::kEnablePinchVirtualViewport,
1037 cc::switches::kDisablePinchVirtualViewport),
[email protected]de0aaed2013-05-27 18:16:431038 },
[email protected]68bc37c2014-01-07 15:56:481039 {
1040 "enable-viewport-meta",
1041 IDS_FLAGS_ENABLE_VIEWPORT_META_NAME,
1042 IDS_FLAGS_ENABLE_VIEWPORT_META_DESCRIPTION,
1043 kOsLinux | kOsWin | kOsCrOS | kOsMac,
1044 SINGLE_VALUE_TYPE(switches::kEnableViewportMeta),
1045 },
[email protected]ed7b67f32012-05-28 10:12:281046#if defined(OS_CHROMEOS)
1047 {
[email protected]8b04a1652012-08-04 02:59:491048 "disable-boot-animation",
1049 IDS_FLAGS_DISABLE_BOOT_ANIMATION,
1050 IDS_FLAGS_DISABLE_BOOT_ANIMATION_DESCRIPTION,
[email protected]37736bd2013-04-18 11:53:581051 kOsCrOSOwnerOnly,
[email protected]2f2d6c32013-05-10 02:56:241052 SINGLE_VALUE_TYPE(chromeos::switches::kDisableBootAnimation),
[email protected]8b04a1652012-08-04 02:59:491053 },
[email protected]95058572012-08-20 14:57:291054 {
[email protected]d739c1db2014-07-08 07:19:591055 "enable-video-player-chromecast-support",
1056 IDS_FLAGS_ENABLE_VIDEO_PLAYER_CHROMECAST_SUPPORT_NAME,
1057 IDS_FLAGS_ENABLE_VIDEO_PLAYER_CHROMECAST_SUPPORT_DESCRIPTION,
1058 kOsCrOS,
1059 SINGLE_VALUE_TYPE(chromeos::switches::kEnableVideoPlayerChromecastSupport)
1060 },
1061 {
[email protected]f2ad22e2014-07-10 17:52:081062 "disable-office-editing-component-app",
1063 IDS_FLAGS_DISABLE_OFFICE_EDITING_COMPONENT_APP_NAME,
1064 IDS_FLAGS_DISABLE_OFFICE_EDITING_COMPONENT_APP_DESCRIPTION,
[email protected]099b890c2013-04-25 19:16:261065 kOsCrOS,
[email protected]f2ad22e2014-07-10 17:52:081066 SINGLE_VALUE_TYPE(chromeos::switches::kDisableOfficeEditingComponentApp),
[email protected]099b890c2013-04-25 19:16:261067 },
[email protected]31cf1472013-09-13 00:36:421068 {
[email protected]bf3f4592014-03-31 19:50:441069 "disable-display-color-calibration",
1070 IDS_FLAGS_DISABLE_DISPLAY_COLOR_CALIBRATION_NAME,
1071 IDS_FLAGS_DISABLE_DISPLAY_COLOR_CALIBRATION_DESCRIPTION,
1072 kOsCrOS,
1073 SINGLE_VALUE_TYPE(ui::switches::kDisableDisplayColorCalibration),
1074 },
jonross98fccbf62015-02-05 22:13:581075 {
1076 "ash-disable-screen-orientation-lock",
1077 IDS_FLAGS_ASH_DISABLE_SCREEN_ORIENTATION_LOCK_NAME,
1078 IDS_FLAGS_ASH_DISABLE_SCREEN_ORIENTATION_LOCK_DESCRIPTION,
1079 kOsCrOS,
1080 SINGLE_VALUE_TYPE(ash::switches::kAshDisableScreenOrientationLock),
1081 },
[email protected]62018dc2012-12-13 00:37:351082#endif // defined(OS_CHROMEOS)
[email protected]7db8893a2012-07-26 00:49:401083 { "disable-accelerated-video-decode",
1084 IDS_FLAGS_DISABLE_ACCELERATED_VIDEO_DECODE_NAME,
1085 IDS_FLAGS_DISABLE_ACCELERATED_VIDEO_DECODE_DESCRIPTION,
sandersdf4e607962015-01-15 20:30:521086 kOsMac | kOsWin | kOsCrOS,
[email protected]7db8893a2012-07-26 00:49:401087 SINGLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
[email protected]66dcb0492012-06-18 22:32:151088 },
[email protected]1d9bb9cd2012-08-28 22:02:501089#if defined(USE_ASH)
[email protected]35c9a4e2013-09-14 01:32:381090 {
1091 "ash-debug-shortcuts",
1092 IDS_FLAGS_DEBUG_SHORTCUTS_NAME,
1093 IDS_FLAGS_DEBUG_SHORTCUTS_DESCRIPTION,
1094 kOsAll,
1095 SINGLE_VALUE_TYPE(ash::switches::kAshDebugShortcuts),
1096 },
tdandersonfd446a02015-03-30 21:51:001097 {
1098 "ash-disable-maximize-mode-window-backdrop",
1099 IDS_FLAGS_ASH_DISABLE_MAXIMIZE_MODE_WINDOW_BACKDROP_NAME,
1100 IDS_FLAGS_ASH_DISABLE_MAXIMIZE_MODE_WINDOW_BACKDROP_DESCRIPTION,
1101 kOsCrOS,
1102 SINGLE_VALUE_TYPE(ash::switches::kAshDisableMaximizeModeWindowBackdrop),
1103 },
[email protected]b19b09a2014-02-26 05:34:341104 { "ash-enable-touch-view-testing",
1105 IDS_FLAGS_ASH_ENABLE_TOUCH_VIEW_TESTING_NAME,
1106 IDS_FLAGS_ASH_ENABLE_TOUCH_VIEW_TESTING_DESCRIPTION,
1107 kOsCrOS,
1108 SINGLE_VALUE_TYPE(ash::switches::kAshEnableTouchViewTesting),
1109 },
jonross367a1bee2014-09-06 12:37:081110 {
jonrossd24d766f2014-12-01 23:55:301111 "disable-touch-feedback",
1112 IDS_FLAGS_DISABLE_TOUCH_FEEDBACK_NAME,
1113 IDS_FLAGS_DISABLE_TOUCH_FEEDBACK_DESCRIPTION,
jonross367a1bee2014-09-06 12:37:081114 kOsCrOS,
jonrossd24d766f2014-12-01 23:55:301115 SINGLE_VALUE_TYPE(switches::kDisableTouchFeedback),
jonross367a1bee2014-09-06 12:37:081116 },
oshima04a995822014-11-14 04:04:431117 { "ash-enable-mirrored-screen",
1118 IDS_FLAGS_ASH_ENABLE_MIRRORED_SCREEN_NAME,
1119 IDS_FLAGS_ASH_ENABLE_MIRRORED_SCREEN_DESCRIPTION,
1120 kOsCrOS,
1121 SINGLE_VALUE_TYPE(ash::switches::kAshEnableMirroredScreen),
1122 },
bruthig37f9cad02015-03-12 22:28:501123 {
1124 "ash-enable-screen-rotation-animations",
1125 IDS_FLAGS_ASH_ENABLE_SCREEN_ROTATION_ANIMATION_NAME,
1126 IDS_FLAGS_ASH_ENABLE_SCREEN_ROTATION_ANIMATION_DESCRIPTION,
1127 kOsCrOS,
1128 MULTI_VALUE_TYPE(kAshScreenRotationAnimationChoices)
1129 },
jonross367a1bee2014-09-06 12:37:081130#endif // defined(USE_ASH)
[email protected]9b7ab882012-09-10 23:46:361131#if defined(OS_CHROMEOS)
1132 {
smckayad90351f2015-02-09 22:40:191133 "disable-cloud-import",
1134 IDS_FLAGS_DISABLE_CLOUD_IMPORT,
1135 IDS_FLAGS_DISABLE_CLOUD_IMPORT_DESCRIPTION,
smckay451de882014-10-22 21:43:291136 kOsCrOS,
smckayad90351f2015-02-09 22:40:191137 SINGLE_VALUE_TYPE(chromeos::switches::kDisableCloudImport)
smckay451de882014-10-22 21:43:291138 },
1139 {
[email protected]9b7ab882012-09-10 23:46:361140 "enable-request-tablet-site",
1141 IDS_FLAGS_ENABLE_REQUEST_TABLET_SITE_NAME,
1142 IDS_FLAGS_ENABLE_REQUEST_TABLET_SITE_DESCRIPTION,
1143 kOsCrOS,
[email protected]2f2d6c32013-05-10 02:56:241144 SINGLE_VALUE_TYPE(chromeos::switches::kEnableRequestTabletSite)
[email protected]9b7ab882012-09-10 23:46:361145 },
1146#endif
[email protected]dab49c0b2012-10-04 05:55:351147 {
1148 "debug-packed-apps",
1149 IDS_FLAGS_DEBUG_PACKED_APP_NAME,
1150 IDS_FLAGS_DEBUG_PACKED_APP_DESCRIPTION,
[email protected]f3cd6802013-01-23 20:25:561151 kOsDesktop,
[email protected]dab49c0b2012-10-04 05:55:351152 SINGLE_VALUE_TYPE(switches::kDebugPackedApps)
1153 },
[email protected]d1459ed2012-10-10 01:29:331154 {
1155 "enable-password-generation",
1156 IDS_FLAGS_ENABLE_PASSWORD_GENERATION_NAME,
1157 IDS_FLAGS_ENABLE_PASSWORD_GENERATION_DESCRIPTION,
rouslanb2237a9c2014-10-28 00:58:471158 kOsWin | kOsLinux | kOsCrOS | kOsMac | kOsAndroid,
[email protected]c3cc0632013-10-03 21:54:431159 ENABLE_DISABLE_VALUE_TYPE(autofill::switches::kEnablePasswordGeneration,
1160 autofill::switches::kDisablePasswordGeneration)
[email protected]d1459ed2012-10-10 01:29:331161 },
[email protected]26d045f2012-10-18 21:18:431162 {
[email protected]0477c062014-04-30 15:02:181163 "enable-automatic-password-saving",
1164 IDS_FLAGS_ENABLE_AUTOMATIC_PASSWORD_SAVING_NAME,
1165 IDS_FLAGS_ENABLE_AUTOMATIC_PASSWORD_SAVING_DESCRIPTION,
1166 kOsDesktop,
1167 SINGLE_VALUE_TYPE(
1168 password_manager::switches::kEnableAutomaticPasswordSaving)
1169 },
1170 {
[email protected]f2a394b2013-11-28 20:08:041171 "password-manager-reauthentication",
[email protected]429a6e02013-10-23 18:40:481172 IDS_FLAGS_PASSWORD_MANAGER_REAUTHENTICATION_NAME,
1173 IDS_FLAGS_PASSWORD_MANAGER_REAUTHENTICATION_DESCRIPTION,
[email protected]48293fb2013-12-04 04:02:031174 kOsMac | kOsWin,
[email protected]f2a394b2013-11-28 20:08:041175 SINGLE_VALUE_TYPE(switches::kDisablePasswordManagerReauthentication)
[email protected]429a6e02013-10-23 18:40:481176 },
1177 {
Garrett Casto22299122014-11-03 21:35:471178 "enable-password-link",
1179 IDS_FLAGS_PASSWORD_MANAGER_LINK_NAME,
1180 IDS_FLAGS_PASSWORD_MANAGER_LINK_DESCRIPTION,
1181 kOsAndroid | kOsDesktop,
[email protected]0f1f70852014-08-09 05:56:011182 ENABLE_DISABLE_VALUE_TYPE(
Garrett Casto22299122014-11-03 21:35:471183 password_manager::switches::kEnablePasswordLink,
1184 password_manager::switches::kDisablePasswordLink)
[email protected]0f1f70852014-08-09 05:56:011185 },
1186 {
dvadymd933d20f2015-01-09 21:57:511187 "enable-password-save-in-page-navigation",
1188 IDS_FLAGS_ENABLE_SAVE_PASSOWRD_ON_IN_PAGE_NAVIGATION_NAME,
1189 IDS_FLAGS_ENABLE_SAVE_PASSOWRD_ON_IN_PAGE_NAVIGATION_DESCRIPTION,
1190 kOsAll,
1191 SINGLE_VALUE_TYPE(
1192 autofill::switches::kEnablePasswordSaveOnInPageNavigation)
1193 },
1194 {
engedya4b285e2015-02-04 12:30:211195 "enable-affiliation-based-matching",
1196 IDS_FLAGS_ENABLE_AFFILIATION_BASED_MATCHING_NAME,
1197 IDS_FLAGS_ENABLE_AFFILIATION_BASED_MATCHING_DESCRIPTION,
1198 kOsWin | kOsLinux | kOsCrOS | kOsMac | kOsAndroid,
1199 ENABLE_DISABLE_VALUE_TYPE(
1200 password_manager::switches::kEnableAffiliationBasedMatching,
1201 password_manager::switches::kDisableAffiliationBasedMatching)
1202 },
1203 {
[email protected]76f7d4882012-10-26 21:09:221204 "enable-deferred-image-decoding",
1205 IDS_FLAGS_ENABLE_DEFERRED_IMAGE_DECODING_NAME,
1206 IDS_FLAGS_ENABLE_DEFERRED_IMAGE_DECODING_DESCRIPTION,
[email protected]76f7d4882012-10-26 21:09:221207 kOsMac | kOsLinux | kOsCrOS,
[email protected]76f7d4882012-10-26 21:09:221208 SINGLE_VALUE_TYPE(switches::kEnableDeferredImageDecoding)
1209 },
1210 {
[email protected]45476982013-10-01 03:22:291211 "wallet-service-use-sandbox",
1212 IDS_FLAGS_WALLET_SERVICE_USE_SANDBOX_NAME,
1213 IDS_FLAGS_WALLET_SERVICE_USE_SANDBOX_DESCRIPTION,
[email protected]d4d59992014-06-04 23:48:071214 kOsAndroid | kOsDesktop,
[email protected]45476982013-10-01 03:22:291215 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
1216 autofill::switches::kWalletServiceUseSandbox, "1",
1217 autofill::switches::kWalletServiceUseSandbox, "0")
[email protected]db3178c2013-03-21 14:54:541218 },
[email protected]177260c2013-04-24 01:47:381219#if defined(USE_AURA)
1220 {
1221 "overscroll-history-navigation",
1222 IDS_FLAGS_OVERSCROLL_HISTORY_NAVIGATION_NAME,
1223 IDS_FLAGS_OVERSCROLL_HISTORY_NAVIGATION_DESCRIPTION,
1224 kOsAll,
[email protected]c38e9802014-02-18 21:32:121225 MULTI_VALUE_TYPE(kOverscrollHistoryNavigationChoices)
[email protected]177260c2013-04-24 01:47:381226 },
1227#endif
[email protected]edbea622012-11-28 20:39:381228 {
[email protected]888878e82013-07-24 22:49:401229 "scroll-end-effect",
1230 IDS_FLAGS_SCROLL_END_EFFECT_NAME,
1231 IDS_FLAGS_SCROLL_END_EFFECT_DESCRIPTION,
1232 kOsCrOS,
1233 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
1234 switches::kScrollEndEffect, "1",
1235 switches::kScrollEndEffect, "0")
1236 },
1237 {
beaudoin4e5b2bba2015-03-26 16:06:551238 "enable-icon-ntp",
1239 IDS_FLAGS_ENABLE_ICON_NTP_NAME,
1240 IDS_FLAGS_ENABLE_ICON_NTP_DESCRIPTION,
1241 kOsAndroid | kOsMac | kOsWin | kOsLinux | kOsCrOS,
1242 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableIconNtp,
1243 switches::kDisableIconNtp)
1244 },
1245 {
[email protected]edbea622012-11-28 20:39:381246 "enable-touch-drag-drop",
1247 IDS_FLAGS_ENABLE_TOUCH_DRAG_DROP_NAME,
1248 IDS_FLAGS_ENABLE_TOUCH_DRAG_DROP_DESCRIPTION,
1249 kOsWin | kOsCrOS,
[email protected]1400e6dc2013-04-27 02:36:271250 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTouchDragDrop,
1251 switches::kDisableTouchDragDrop)
[email protected]edbea622012-11-28 20:39:381252 },
[email protected]0e2f43b62013-02-21 00:47:151253 {
1254 "enable-touch-editing",
1255 IDS_FLAGS_ENABLE_TOUCH_EDITING_NAME,
1256 IDS_FLAGS_ENABLE_TOUCH_EDITING_DESCRIPTION,
[email protected]877dd942014-06-06 16:02:011257 kOsCrOS | kOsWin | kOsLinux,
[email protected]1400e6dc2013-04-27 02:36:271258 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTouchEditing,
1259 switches::kDisableTouchEditing)
[email protected]0e2f43b62013-02-21 00:47:151260 },
[email protected]92e12dd92012-12-11 03:33:201261 {
mfomitchev5ad034ec2015-04-24 21:57:271262 "touch-selection-strategy",
1263 IDS_FLAGS_TOUCH_SELECTION_STRATEGY_NAME,
1264 IDS_FLAGS_TOUCH_SELECTION_STRATEGY_DESCRIPTION,
1265 kOsAndroid, // TODO(mfomitchev): Add CrOS/Win/Linux support soon.
1266 MULTI_VALUE_TYPE(kTouchTextSelectionStrategyChoices)
1267 },
1268 {
ricea64c07d792014-10-08 03:37:001269 "enable-stale-while-revalidate",
1270 IDS_FLAGS_ENABLE_STALE_WHILE_REVALIDATE_NAME,
1271 IDS_FLAGS_ENABLE_STALE_WHILE_REVALIDATE_DESCRIPTION,
1272 kOsAll,
1273 SINGLE_VALUE_TYPE(switches::kEnableStaleWhileRevalidate)
1274 },
1275 {
[email protected]06a82ff2014-04-25 02:24:461276 "enable-suggestions-service",
1277 IDS_FLAGS_ENABLE_SUGGESTIONS_SERVICE_NAME,
1278 IDS_FLAGS_ENABLE_SUGGESTIONS_SERVICE_DESCRIPTION,
1279 kOsAndroid | kOsCrOS,
1280 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSuggestionsService,
1281 switches::kDisableSuggestionsService)
1282 },
1283 {
treib1a600c72015-02-09 13:47:561284 "enable-supervised-user-managed-bookmarks-folder",
1285 IDS_FLAGS_ENABLE_SUPERVISED_USER_MANAGED_BOOKMARKS_FOLDER_NAME,
1286 IDS_FLAGS_ENABLE_SUPERVISED_USER_MANAGED_BOOKMARKS_FOLDER_DESCRIPTION,
1287 kOsAndroid | kOsMac | kOsWin | kOsLinux | kOsCrOS,
1288 SINGLE_VALUE_TYPE(switches::kEnableSupervisedUserManagedBookmarksFolder)
1289 },
[email protected]630a27a2014-01-15 08:24:091290#if defined(ENABLE_APP_LIST)
1291 {
[email protected]4734b902014-04-03 16:42:101292 "enable-sync-app-list",
1293 IDS_FLAGS_ENABLE_SYNC_APP_LIST_NAME,
1294 IDS_FLAGS_ENABLE_SYNC_APP_LIST_DESCRIPTION,
[email protected]630a27a2014-01-15 08:24:091295 kOsDesktop,
asvitkinebff63b22014-11-25 01:03:521296 ENABLE_DISABLE_VALUE_TYPE(app_list::switches::kEnableSyncAppList,
1297 app_list::switches::kDisableSyncAppList)
[email protected]630a27a2014-01-15 08:24:091298 },
1299#endif
[email protected]d41cf1b2014-02-21 01:24:351300#if defined(OS_MACOSX)
1301 {
[email protected]0039b0be2014-03-12 20:24:111302 "enable-avfoundation",
1303 IDS_FLAGS_ENABLE_AVFOUNDATION_NAME,
1304 IDS_FLAGS_ENABLE_AVFOUNDATION_DESCRIPTION,
[email protected]d41cf1b2014-02-21 01:24:351305 kOsMac,
asvitkinebff63b22014-11-25 01:03:521306 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableAVFoundation,
1307 switches::kForceQTKit)
[email protected]d41cf1b2014-02-21 01:24:351308 },
1309#endif
[email protected]5b93e162013-02-19 06:33:091310 {
[email protected]7621af22013-09-12 23:06:331311 "lcd-text-aa",
1312 IDS_FLAGS_LCD_TEXT_NAME,
1313 IDS_FLAGS_LCD_TEXT_DESCRIPTION,
1314 kOsDesktop,
asvitkinebff63b22014-11-25 01:03:521315 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableLCDText,
1316 switches::kDisableLCDText)
[email protected]7621af22013-09-12 23:06:331317 },
[email protected]4ac579b2014-05-20 06:43:231318#if defined(OS_ANDROID) || defined(OS_MACOSX)
[email protected]7621af22013-09-12 23:06:331319 {
[email protected]0c04d1c2013-07-10 00:02:321320 "delegated-renderer",
1321 IDS_FLAGS_DELEGATED_RENDERER_NAME,
1322 IDS_FLAGS_DELEGATED_RENDERER_DESCRIPTION,
[email protected]4ac579b2014-05-20 06:43:231323 kOsAndroid, // TODO(ccameron) Add mac support soon.
asvitkinebff63b22014-11-25 01:03:521324 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableDelegatedRenderer,
1325 switches::kDisableDelegatedRenderer)
[email protected]0c04d1c2013-07-10 00:02:321326 },
[email protected]758efb02014-04-05 07:53:451327#endif
[email protected]0c04d1c2013-07-10 00:02:321328 {
[email protected]a42c85f2013-04-04 18:15:121329 "max-tiles-for-interest-area",
1330 IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_NAME,
1331 IDS_FLAGS_MAX_TILES_FOR_INTEREST_AREA_DESCRIPTION,
[email protected]1a82f7372013-12-06 12:46:521332 kOsAll,
[email protected]a42c85f2013-04-04 18:15:121333 MULTI_VALUE_TYPE(kMaxTilesForInterestAreaChoices)
1334 },
[email protected]7cf7ccb2013-04-20 02:53:081335 {
brettw61a39cf2015-03-30 21:24:141336 "enable-offer-store-unmasked-wallet-cards",
1337 IDS_FLAGS_ENABLE_OFFER_STORE_UNMASKED_WALLET_CARDS,
1338 IDS_FLAGS_ENABLE_OFFER_STORE_UNMASKED_WALLET_CARDS_DESCRIPTION,
1339 kOsAll,
1340 ENABLE_DISABLE_VALUE_TYPE(
1341 autofill::switches::kEnableOfferStoreUnmaskedWalletCards,
1342 autofill::switches::kDisableOfferStoreUnmaskedWalletCards)
1343 },
1344 {
[email protected]5676e7482013-12-17 08:05:371345 "enable-offline-auto-reload",
1346 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_NAME,
1347 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_DESCRIPTION,
1348 kOsAll,
[email protected]bd519e32014-05-09 01:33:171349 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOfflineAutoReload,
1350 switches::kDisableOfflineAutoReload)
[email protected]5676e7482013-12-17 08:05:371351 },
1352 {
[email protected]d2e1a0a2014-06-16 15:49:371353 "enable-offline-auto-reload-visible-only",
1354 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_VISIBLE_ONLY_NAME,
1355 IDS_FLAGS_ENABLE_OFFLINE_AUTO_RELOAD_VISIBLE_ONLY_DESCRIPTION,
1356 kOsAll,
1357 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOfflineAutoReloadVisibleOnly,
1358 switches::kDisableOfflineAutoReloadVisibleOnly)
1359 },
1360 {
megjablon78a42542015-03-11 18:23:231361 "show-saved-copy",
1362 IDS_FLAGS_SHOW_SAVED_COPY_NAME,
1363 IDS_FLAGS_SHOW_SAVED_COPY_DESCRIPTION,
afakhryf0227a02014-11-17 23:12:411364 kOsAll,
megjablon78a42542015-03-11 18:23:231365 MULTI_VALUE_TYPE(kShowSavedCopyChoices)
[email protected]d8bc9132014-05-02 15:56:371366 },
1367 {
[email protected]a3618122013-04-26 21:15:341368 "default-tile-width",
1369 IDS_FLAGS_DEFAULT_TILE_WIDTH_NAME,
1370 IDS_FLAGS_DEFAULT_TILE_WIDTH_DESCRIPTION,
1371 kOsAll,
1372 MULTI_VALUE_TYPE(kDefaultTileWidthChoices)
1373 },
1374 {
1375 "default-tile-height",
1376 IDS_FLAGS_DEFAULT_TILE_HEIGHT_NAME,
1377 IDS_FLAGS_DEFAULT_TILE_HEIGHT_DESCRIPTION,
1378 kOsAll,
1379 MULTI_VALUE_TYPE(kDefaultTileHeightChoices)
1380 },
[email protected]2289b432014-08-08 17:52:111381#if defined(OS_ANDROID)
1382 {
1383 "disable-gesture-requirement-for-media-playback",
1384 IDS_FLAGS_DISABLE_GESTURE_REQUIREMENT_FOR_MEDIA_PLAYBACK_NAME,
1385 IDS_FLAGS_DISABLE_GESTURE_REQUIREMENT_FOR_MEDIA_PLAYBACK_DESCRIPTION,
1386 kOsAndroid,
1387 SINGLE_VALUE_TYPE(switches::kDisableGestureRequirementForMediaPlayback)
1388 },
1389#endif
[email protected]86459e2c2013-04-10 13:39:241390#if defined(OS_CHROMEOS)
1391 {
1392 "enable-virtual-keyboard",
1393 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_NAME,
1394 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_DESCRIPTION,
1395 kOsCrOS,
1396 SINGLE_VALUE_TYPE(keyboard::switches::kEnableVirtualKeyboard)
1397 },
[email protected]8b4321e2013-10-25 01:16:181398 {
[email protected]bb6378fe2014-04-28 21:19:441399 "enable-virtual-keyboard-overscroll",
1400 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_OVERSCROLL_NAME,
1401 IDS_FLAGS_ENABLE_VIRTUAL_KEYBOARD_OVERSCROLL_DESCRIPTION,
1402 kOsCrOS,
1403 ENABLE_DISABLE_VALUE_TYPE(
1404 keyboard::switches::kEnableVirtualKeyboardOverscroll,
1405 keyboard::switches::kDisableVirtualKeyboardOverscroll)
1406 },
1407 {
[email protected]8b4321e2013-10-25 01:16:181408 "enable-swipe-selection",
1409 IDS_FLAGS_ENABLE_SWIPE_SELECTION_NAME,
1410 IDS_FLAGS_ENABLE_SWIPE_SELECTION_DESCRIPTION,
1411 kOsCrOS,
1412 SINGLE_VALUE_TYPE(keyboard::switches::kEnableSwipeSelection)
1413 },
[email protected]0e627fb12014-03-25 18:18:531414 {
1415 "enable-input-view",
1416 IDS_FLAGS_ENABLE_INPUT_VIEW_NAME,
1417 IDS_FLAGS_ENABLE_INPUT_VIEW_DESCRIPTION,
1418 kOsCrOS,
1419 ENABLE_DISABLE_VALUE_TYPE(keyboard::switches::kEnableInputView,
1420 keyboard::switches::kDisableInputView)
1421 },
[email protected]90933412014-06-05 21:11:021422 {
shuchend9008942014-10-23 15:17:141423 "enable-new-korean-ime",
1424 IDS_FLAGS_ENABLE_NEW_KOREAN_IME_NAME,
1425 IDS_FLAGS_ENABLE_NEW_KOREAN_IME_DESCRIPTION,
1426 kOsCrOS,
1427 SINGLE_VALUE_TYPE(chromeos::switches::kEnableNewKoreanIme)
1428 },
1429 {
fengyuan0ad7e3342015-03-25 06:44:111430 "disable-new-md-input-view",
1431 IDS_FLAGS_DISABLE_NEW_MD_INPUT_VIEW_NAME,
1432 IDS_FLAGS_DISABLE_NEW_MD_INPUT_VIEW_DESCRIPTION,
fengyuanda3e4fb2014-12-08 15:46:271433 kOsCrOS,
rsadamba9ebf72015-05-05 17:40:561434 SINGLE_VALUE_TYPE(keyboard::switches::kDisableNewMDInputView)
fengyuanda3e4fb2014-12-08 15:46:271435 },
1436 {
shuchenae809092015-02-15 05:26:471437 "enable-physical-keyboard-autocorrect",
1438 IDS_FLAGS_ENABLE_PHYSICAL_KEYBOARD_AUTOCORRECT_NAME,
1439 IDS_FLAGS_ENABLE_PHYSICAL_KEYBOARD_AUTOCORRECT_DESCRIPTION,
shuchend9008942014-10-23 15:17:141440 kOsCrOS,
shuchenae809092015-02-15 05:26:471441 ENABLE_DISABLE_VALUE_TYPE(
1442 chromeos::switches::kEnablePhysicalKeyboardAutocorrect,
1443 chromeos::switches::kDisablePhysicalKeyboardAutocorrect)
shuchen3efbc4182015-01-20 06:54:361444 },
1445 {
1446 "disable-voice-input",
1447 IDS_FLAGS_DISABLE_VOICE_INPUT_NAME,
1448 IDS_FLAGS_DISABLE_VOICE_INPUT_DESCRIPTION,
1449 kOsCrOS,
rsadamba9ebf72015-05-05 17:40:561450 SINGLE_VALUE_TYPE(keyboard::switches::kDisableVoiceInput)
shuchend9008942014-10-23 15:17:141451 },
1452 {
[email protected]90933412014-06-05 21:11:021453 "enable-experimental-input-view-features",
1454 IDS_FLAGS_ENABLE_EXPERIMENTAL_INPUT_VIEW_FEATURES_NAME,
1455 IDS_FLAGS_ENABLE_EXPERIMENTAL_INPUT_VIEW_FEATURES_DESCRIPTION,
1456 kOsCrOS,
1457 SINGLE_VALUE_TYPE(keyboard::switches::kEnableExperimentalInputViewFeatures)
1458 },
rsadam9172bc8a2014-10-29 23:37:381459 {
bsheb67430e2015-04-30 14:02:111460 "floating-virtual-keyboard",
1461 IDS_FLAGS_FLOATING_VIRTUAL_KEYBOARD_NAME,
1462 IDS_FLAGS_FLOATING_VIRTUAL_KEYBOARD_DESCRIPTION,
1463 kOsCrOS,
1464 MULTI_VALUE_TYPE(kFloatingVirtualKeyboardChoices)
1465 },
1466 {
rsadamb5040022015-05-06 21:20:311467 "gesture-typing",
1468 IDS_FLAGS_GESTURE_TYPING_NAME,
1469 IDS_FLAGS_GESTURE_TYPING_DESCRIPTION,
stevet37b682b2015-01-22 14:37:161470 kOsCrOS,
rsadamb5040022015-05-06 21:20:311471 MULTI_VALUE_TYPE(kGestureTypingChoices)
stevet37b682b2015-01-22 14:37:161472 },
1473 {
rsadamecb5ce9e2015-05-12 16:24:531474 "gesture-editing",
1475 IDS_FLAGS_GESTURE_EDITING_NAME,
1476 IDS_FLAGS_GESTURE_EDITING_DESCRIPTION,
rsadam0a9d9352015-03-12 16:31:131477 kOsCrOS,
rsadamecb5ce9e2015-05-12 16:24:531478 MULTI_VALUE_TYPE(kGestureEditingChoices)
rsadam0a9d9352015-03-12 16:31:131479 },
1480 {
rsadambf658222015-01-20 16:52:551481 "disable-smart-virtual-keyboard",
1482 IDS_FLAGS_DISABLE_SMART_VIRTUAL_KEYBOARD_NAME,
1483 IDS_FLAGS_DISABLE_SMART_VIRTUAL_KEYBOARD_DESCRIPTION,
rsadam9172bc8a2014-10-29 23:37:381484 kOsCrOS,
rsadambf658222015-01-20 16:52:551485 SINGLE_VALUE_TYPE(keyboard::switches::kDisableSmartVirtualKeyboard)
rsadam9172bc8a2014-10-29 23:37:381486 },
[email protected]86459e2c2013-04-10 13:39:241487#endif
[email protected]38484df12013-04-10 16:42:031488 {
1489 "enable-simple-cache-backend",
1490 IDS_FLAGS_ENABLE_SIMPLE_CACHE_BACKEND_NAME,
1491 IDS_FLAGS_ENABLE_SIMPLE_CACHE_BACKEND_DESCRIPTION,
[email protected]957cd5a2014-03-27 19:54:171492 kOsWin | kOsMac | kOsLinux | kOsCrOS,
[email protected]38484df12013-04-10 16:42:031493 MULTI_VALUE_TYPE(kSimpleCacheBackendChoices)
1494 },
[email protected]717e4e22013-04-10 20:52:231495 {
1496 "enable-tcp-fast-open",
1497 IDS_FLAGS_ENABLE_TCP_FAST_OPEN_NAME,
1498 IDS_FLAGS_ENABLE_TCP_FAST_OPEN_DESCRIPTION,
[email protected]d0a8a162013-04-13 01:37:111499 kOsLinux | kOsCrOS | kOsAndroid,
[email protected]717e4e22013-04-10 20:52:231500 SINGLE_VALUE_TYPE(switches::kEnableTcpFastOpen)
1501 },
[email protected]2188c8d2014-03-21 00:58:561502#if defined(ENABLE_SERVICE_DISCOVERY)
[email protected]a4ed7e12013-05-24 01:00:281503 {
[email protected]d394d9762013-09-22 06:00:251504 "device-discovery-notifications",
1505 IDS_FLAGS_DEVICE_DISCOVERY_NOTIFICATIONS_NAME,
1506 IDS_FLAGS_DEVICE_DISCOVERY_NOTIFICATIONS_DESCRIPTION,
[email protected]4e6c96e2014-05-17 18:41:191507 kOsDesktop,
[email protected]d394d9762013-09-22 06:00:251508 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableDeviceDiscoveryNotifications,
1509 switches::kDisableDeviceDiscoveryNotifications)
[email protected]94868922013-09-19 18:00:551510 },
[email protected]53ffe0d2013-10-30 01:20:401511 {
[email protected]f0392392014-03-10 20:07:521512 "enable-print-preview-register-promos",
1513 IDS_FLAGS_ENABLE_PRINT_PREVIEW_REGISTER_PROMOS_NAME,
1514 IDS_FLAGS_ENABLE_PRINT_PREVIEW_REGISTER_PROMOS_DESCRIPTION,
[email protected]4e6c96e2014-05-17 18:41:191515 kOsDesktop,
[email protected]f0392392014-03-10 20:07:521516 SINGLE_VALUE_TYPE(switches::kEnablePrintPreviewRegisterPromos)
1517 },
[email protected]2188c8d2014-03-21 00:58:561518#endif // ENABLE_SERVICE_DISCOVERY
[email protected]ca53b142014-02-25 22:42:231519#if defined(OS_WIN)
1520 {
1521 "enable-cloud-print-xps",
1522 IDS_FLAGS_ENABLE_CLOUD_PRINT_XPS_NAME,
1523 IDS_FLAGS_ENABLE_CLOUD_PRINT_XPS_DESCRIPTION,
1524 kOsWin,
1525 SINGLE_VALUE_TYPE(switches::kEnableCloudPrintXps)
1526 },
1527#endif
[email protected]910ecfe2013-06-03 23:38:141528#if defined(USE_AURA)
1529 {
1530 "tab-capture-upscale-quality",
1531 IDS_FLAGS_TAB_CAPTURE_UPSCALE_QUALITY_NAME,
1532 IDS_FLAGS_TAB_CAPTURE_UPSCALE_QUALITY_DESCRIPTION,
1533 kOsAll,
1534 MULTI_VALUE_TYPE(kTabCaptureUpscaleQualityChoices)
1535 },
1536 {
1537 "tab-capture-downscale-quality",
1538 IDS_FLAGS_TAB_CAPTURE_DOWNSCALE_QUALITY_NAME,
1539 IDS_FLAGS_TAB_CAPTURE_DOWNSCALE_QUALITY_DESCRIPTION,
1540 kOsAll,
1541 MULTI_VALUE_TYPE(kTabCaptureDownscaleQualityChoices)
1542 },
1543#endif
tdanderson8edd6e42015-02-11 00:19:371544#if defined(TOOLKIT_VIEWS)
1545 {
tdanderson5c0b95bd2015-03-12 19:40:481546 "disable-hide-inactive-stacked-tab-close-buttons",
1547 IDS_FLAGS_DISABLE_HIDE_INACTIVE_STACKED_TAB_CLOSE_BUTTONS_NAME,
1548 IDS_FLAGS_DISABLE_HIDE_INACTIVE_STACKED_TAB_CLOSE_BUTTONS_DESCRIPTION,
tdanderson8edd6e42015-02-11 00:19:371549 kOsCrOS | kOsWin | kOsLinux,
tdanderson5c0b95bd2015-03-12 19:40:481550 SINGLE_VALUE_TYPE(switches::kDisableHideInactiveStackedTabCloseButtons)
tdanderson8edd6e42015-02-11 00:19:371551 },
1552#endif
rouslanc9c5b39a2015-03-25 19:58:361553#if defined(ENABLE_SPELLCHECK)
1554 {
1555 "enable-spelling-feedback-field-trial",
1556 IDS_FLAGS_ENABLE_SPELLING_FEEDBACK_FIELD_TRIAL_NAME,
1557 IDS_FLAGS_ENABLE_SPELLING_FEEDBACK_FIELD_TRIAL_DESCRIPTION,
1558 kOsAll,
1559 SINGLE_VALUE_TYPE(switches::kEnableSpellingFeedbackFieldTrial)
1560 },
1561#endif
[email protected]5e099c62013-06-08 05:46:231562 {
[email protected]71d4f602013-06-04 23:21:101563 "enable-webgl-draft-extensions",
1564 IDS_FLAGS_ENABLE_WEBGL_DRAFT_EXTENSIONS_NAME,
1565 IDS_FLAGS_ENABLE_WEBGL_DRAFT_EXTENSIONS_DESCRIPTION,
1566 kOsAll,
1567 SINGLE_VALUE_TYPE(switches::kEnableWebGLDraftExtensions)
1568 },
[email protected]deadc492013-06-07 21:39:281569 {
[email protected]020df792013-06-29 14:26:211570 "enable-new-profile-management",
1571 IDS_FLAGS_ENABLE_NEW_PROFILE_MANAGEMENT_NAME,
1572 IDS_FLAGS_ENABLE_NEW_PROFILE_MANAGEMENT_DESCRIPTION,
[email protected]a3b75bd2014-05-28 17:49:421573 kOsAndroid | kOsMac | kOsWin | kOsLinux | kOsCrOS,
[email protected]29896ee2014-06-17 17:20:531574 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableNewProfileManagement,
1575 switches::kDisableNewProfileManagement)
[email protected]020df792013-06-29 14:26:211576 },
1577 {
[email protected]1017a3212014-05-30 10:34:591578 "enable-account-consistency",
1579 IDS_FLAGS_ENABLE_ACCOUNT_CONSISTENCY_NAME,
1580 IDS_FLAGS_ENABLE_ACCOUNT_CONSISTENCY_DESCRIPTION,
1581 kOsAndroid | kOsMac | kOsWin | kOsLinux | kOsCrOS,
[email protected]29896ee2014-06-17 17:20:531582 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableAccountConsistency,
1583 switches::kDisableAccountConsistency)
[email protected]1017a3212014-05-30 10:34:591584 },
1585 {
[email protected]8f569882014-03-25 21:12:121586 "enable-fast-user-switching",
1587 IDS_FLAGS_ENABLE_FAST_USER_SWITCHING_NAME,
1588 IDS_FLAGS_ENABLE_FAST_USER_SWITCHING_DESCRIPTION,
1589 kOsMac | kOsWin | kOsLinux,
1590 SINGLE_VALUE_TYPE(switches::kFastUserSwitching)
1591 },
1592 {
[email protected]274171e2014-04-11 23:10:081593 "enable-new-avatar-menu",
1594 IDS_FLAGS_ENABLE_NEW_AVATAR_MENU_NAME,
1595 IDS_FLAGS_ENABLE_NEW_AVATAR_MENU_DESCRIPTION,
1596 kOsMac | kOsWin | kOsLinux,
[email protected]9152a542014-08-06 05:37:451597 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableNewAvatarMenu,
1598 switches::kDisableNewAvatarMenu)
[email protected]274171e2014-04-11 23:10:081599 },
1600 {
rogerta334d80372015-01-07 23:10:201601 "enable-iframe-based-signin",
1602 IDS_FLAGS_ENABLE_IFRAME_BASED_SIGNIN_NAME,
1603 IDS_FLAGS_ENABLE_IFRAME_BASED_SIGNIN_DESCRIPTION,
guohui69cf14732014-10-24 17:14:211604 kOsMac | kOsWin | kOsLinux,
rogerta334d80372015-01-07 23:10:201605 SINGLE_VALUE_TYPE(switches::kEnableIframeBasedSignin)
guohui69cf14732014-10-24 17:14:211606 },
1607 {
[email protected]115d5728c2013-10-23 18:06:141608 "enable-google-profile-info",
1609 IDS_FLAGS_ENABLE_GOOGLE_PROFILE_INFO_NAME,
1610 IDS_FLAGS_ENABLE_GOOGLE_PROFILE_INFO_DESCRIPTION,
[email protected]a9bf7d62013-07-11 22:11:221611 kOsMac | kOsWin | kOsLinux,
[email protected]115d5728c2013-10-23 18:06:141612 SINGLE_VALUE_TYPE(switches::kGoogleProfileInfo)
[email protected]020df792013-06-29 14:26:211613 },
[email protected]dcf6cf32013-07-03 10:53:281614 {
[email protected]056ed7092014-01-09 12:57:211615 "reset-app-list-install-state",
[email protected]a85aa332013-10-22 11:09:591616 IDS_FLAGS_RESET_APP_LIST_INSTALL_STATE_NAME,
1617 IDS_FLAGS_RESET_APP_LIST_INSTALL_STATE_DESCRIPTION,
[email protected]7199367d2014-01-20 04:06:211618 kOsMac | kOsWin | kOsLinux,
[email protected]a85aa332013-10-22 11:09:591619 SINGLE_VALUE_TYPE(switches::kResetAppListInstallState)
[email protected]dcf6cf32013-07-03 10:53:281620 },
[email protected]919b2f82013-10-04 03:11:261621#if defined(ENABLE_APP_LIST)
[email protected]7199367d2014-01-20 04:06:211622#if defined(OS_LINUX)
1623 {
1624 // This is compiled out on non-Linux platforms because otherwise it would be
1625 // visible on Win/Mac/CrOS but not on Linux GTK, which would be confusing.
1626 // TODO(mgiuca): Remove the #if when Aura is the default on Linux.
1627 "enable-app-list",
1628 IDS_FLAGS_ENABLE_APP_LIST_NAME,
1629 IDS_FLAGS_ENABLE_APP_LIST_DESCRIPTION,
1630 kOsLinux,
1631 SINGLE_VALUE_TYPE(switches::kEnableAppList)
1632 },
1633#endif
fsamueldac71982014-12-09 20:55:161634#if defined(ENABLE_EXTENSIONS)
1635 {
fsamuel89d8ecf2014-12-19 02:11:301636 "enable-surface-worker",
1637 IDS_FLAGS_ENABLE_SURFACE_WORKER_NAME,
1638 IDS_FLAGS_ENABLE_SURFACE_WORKER_DESCRIPTION,
fsamueldac71982014-12-09 20:55:161639 kOsDesktop,
fsamuel89d8ecf2014-12-19 02:11:301640 SINGLE_VALUE_TYPE(extensions::switches::kEnableSurfaceWorker)
fsamueldac71982014-12-09 20:55:161641 },
1642#endif
[email protected]97df3be2014-07-03 07:49:101643 {
xiyuan37407a72014-10-15 00:06:221644 "disable-drive-apps-in-app-list",
1645 IDS_FLAGS_DISABLE_DRIVE_APPS_IN_APP_LIST_NAME,
1646 IDS_FLAGS_DISABLE_DRIVE_APPS_IN_APP_LIST_DESCRIPTION,
1647 kOsCrOS,
1648 SINGLE_VALUE_TYPE(app_list::switches::kDisableDriveAppsInAppList)
1649 },
[email protected]919b2f82013-10-04 03:11:261650#endif
[email protected]0e38c3252013-08-14 22:18:511651#if defined(OS_ANDROID)
1652 {
1653 "enable-accessibility-tab-switcher",
1654 IDS_FLAGS_ENABLE_ACCESSIBILITY_TAB_SWITCHER_NAME,
1655 IDS_FLAGS_ENABLE_ACCESSIBILITY_TAB_SWITCHER_DESCRIPTION,
1656 kOsAndroid,
1657 SINGLE_VALUE_TYPE(switches::kEnableAccessibilityTabSwitcher)
[email protected]2e9d79f2013-08-16 05:45:561658 },
[email protected]738384172013-12-05 01:59:561659 {
[email protected]0e174722014-03-31 21:23:271660 // TODO(dmazzoni): remove this flag when native android accessibility
1661 // ships in the stable channel. http://crbug.com/356775
1662 "enable-accessibility-script-injection",
1663 IDS_FLAGS_ENABLE_ACCESSIBILITY_SCRIPT_INJECTION_NAME,
1664 IDS_FLAGS_ENABLE_ACCESSIBILITY_SCRIPT_INJECTION_DESCRIPTION,
[email protected]738384172013-12-05 01:59:561665 kOsAndroid,
[email protected]0e174722014-03-31 21:23:271666 // Java-only switch: ContentSwitches.ENABLE_ACCESSIBILITY_SCRIPT_INJECTION.
1667 SINGLE_VALUE_TYPE("enable-accessibility-script-injection")
[email protected]738384172013-12-05 01:59:561668 },
[email protected]0e38c3252013-08-14 22:18:511669#endif
[email protected]2e9d79f2013-08-16 05:45:561670 {
[email protected]2cccfef2014-05-01 06:05:161671 "enable-one-copy",
1672 IDS_FLAGS_ONE_COPY_NAME,
1673 IDS_FLAGS_ONE_COPY_DESCRIPTION,
[email protected]be2e40a2013-08-27 02:49:201674 kOsAll,
asvitkinebff63b22014-11-25 01:03:521675 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOneCopy,
1676 switches::kDisableOneCopy)
[email protected]2cccfef2014-05-01 06:05:161677 },
1678 {
1679 "enable-zero-copy",
1680 IDS_FLAGS_ZERO_COPY_NAME,
1681 IDS_FLAGS_ZERO_COPY_DESCRIPTION,
1682 kOsAll,
reveman91a0a872014-11-04 03:40:321683 SINGLE_VALUE_TYPE(switches::kEnableZeroCopy)
[email protected]4fdc518f2013-08-28 21:37:271684 },
[email protected]bbb4beae2013-09-27 17:20:311685#if defined(OS_CHROMEOS)
1686 {
[email protected]407d82b2013-12-13 11:50:591687 "enable-first-run-ui-transitions",
1688 IDS_FLAGS_ENABLE_FIRST_RUN_UI_TRANSITIONS_NAME,
1689 IDS_FLAGS_ENABLE_FIRST_RUN_UI_TRANSITIONS_DESCRIPTION,
1690 kOsCrOS,
1691 SINGLE_VALUE_TYPE(chromeos::switches::kEnableFirstRunUITransitions)
1692 },
[email protected]bbb4beae2013-09-27 17:20:311693#endif
[email protected]ed1aab12013-10-08 14:27:071694 {
benwellsa75f874b2015-02-07 04:15:141695 "disable-new-bookmark-apps",
taptedbf2016442015-02-19 08:45:271696 IDS_FLAGS_NEW_BOOKMARK_APPS_NAME,
1697 IDS_FLAGS_NEW_BOOKMARK_APPS_DESCRIPTION,
mitchelljones6d1594de2014-12-02 01:42:441698 kOsWin | kOsCrOS | kOsLinux | kOsMac,
taptedbf2016442015-02-19 08:45:271699 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableNewBookmarkApps,
1700 switches::kDisableNewBookmarkApps)
[email protected]f95e6df2013-10-11 13:05:171701 },
mitchelljones58e359152014-12-19 01:10:131702#if defined(OS_MACOSX)
1703 {
mitchelljones3e8befd2015-02-13 01:06:121704 "disable-hosted-app-shim-creation",
1705 IDS_FLAGS_DISABLE_HOSTED_APP_SHIM_CREATION_NAME,
1706 IDS_FLAGS_DISABLE_HOSTED_APP_SHIM_CREATION_DESCRIPTION,
mitchelljones58e359152014-12-19 01:10:131707 kOsMac,
mitchelljones3e8befd2015-02-13 01:06:121708 SINGLE_VALUE_TYPE(switches::kDisableHostedAppShimCreation)
mitchelljones58e359152014-12-19 01:10:131709 },
mitchelljones3bc6ced2014-12-19 05:01:371710 {
1711 "enable-hosted-app-quit-notification",
1712 IDS_FLAGS_ENABLE_HOSTED_APP_QUIT_NOTIFICATION_NAME,
1713 IDS_FLAGS_ENABLE_HOSTED_APP_QUIT_NOTIFICATION_DESCRIPTION,
1714 kOsMac,
1715 SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)
1716 },
mitchelljones58e359152014-12-19 01:10:131717#endif
[email protected]a0ef5212013-10-15 18:08:261718 {
benwells29469002014-12-09 08:02:591719 "enable-ephemeral-apps-in-webstore",
1720 IDS_FLAGS_ENABLE_EPHEMERAL_APPS_IN_WEBSTORE_NAME,
1721 IDS_FLAGS_ENABLE_EPHEMERAL_APPS_IN_WEBSTORE_DESCRIPTION,
[email protected]c04b3332014-05-30 10:43:201722 kOsAll,
benwells29469002014-12-09 08:02:591723 SINGLE_VALUE_TYPE(switches::kEnableEphemeralAppsInWebstore)
[email protected]912576e2013-10-21 10:33:131724 },
1725 {
[email protected]5ec67052013-12-19 05:40:211726 "enable-linkable-ephemeral-apps",
1727 IDS_FLAGS_ENABLE_LINKABLE_EPHEMERAL_APPS_NAME,
1728 IDS_FLAGS_ENABLE_LINKABLE_EPHEMERAL_APPS_DESCRIPTION,
[email protected]c04b3332014-05-30 10:43:201729 kOsAll,
[email protected]5ec67052013-12-19 05:40:211730 SINGLE_VALUE_TYPE(switches::kEnableLinkableEphemeralApps)
1731 },
1732 {
[email protected]7d8056d2014-04-14 15:55:211733 "enable-service-worker-sync",
1734 IDS_FLAGS_ENABLE_SERVICE_WORKER_SYNC_NAME,
1735 IDS_FLAGS_ENABLE_SERVICE_WORKER_SYNC_DESCRIPTION,
1736 kOsAll,
1737 SINGLE_VALUE_TYPE(switches::kEnableServiceWorkerSync)
1738 },
[email protected]dfb66c522013-10-22 19:46:321739#if defined(OS_ANDROID)
1740 {
1741 "disable-click-delay",
1742 IDS_FLAGS_DISABLE_CLICK_DELAY_NAME,
1743 IDS_FLAGS_DISABLE_CLICK_DELAY_DESCRIPTION,
1744 kOsAndroid,
1745 // Java-only switch: CommandLine.DISABLE_CLICK_DELAY
1746 SINGLE_VALUE_TYPE("disable-click-delay")
1747 },
jdduke0fa512992014-11-21 03:18:451748 {
1749 "disable-pull-to-refresh-effect",
1750 IDS_FLAGS_DISABLE_PULL_TO_REFRESH_EFFECT_NAME,
1751 IDS_FLAGS_DISABLE_PULL_TO_REFRESH_EFFECT_DESCRIPTION,
1752 kOsAndroid,
1753 SINGLE_VALUE_TYPE(switches::kDisablePullToRefreshEffect)
1754 },
[email protected]dfb66c522013-10-22 19:46:321755#endif
[email protected]5a606592014-01-31 10:32:311756#if defined(OS_MACOSX)
[email protected]c2c84ab2013-11-18 03:05:091757 {
1758 "enable-translate-new-ux",
1759 IDS_FLAGS_ENABLE_TRANSLATE_NEW_UX_NAME,
1760 IDS_FLAGS_ENABLE_TRANSLATE_NEW_UX_DESCRIPTION,
[email protected]5a606592014-01-31 10:32:311761 kOsMac,
[email protected]c2c84ab2013-11-18 03:05:091762 SINGLE_VALUE_TYPE(switches::kEnableTranslateNewUX)
1763 },
[email protected]5a606592014-01-31 10:32:311764#endif
[email protected]c4f51d22013-11-05 03:11:261765#if defined(TOOLKIT_VIEWS)
1766 {
[email protected]88b47ad72013-11-21 03:34:381767 "disable-views-rect-based-targeting", // FLAGS:RECORD_UMA
1768 IDS_FLAGS_DISABLE_VIEWS_RECT_BASED_TARGETING_NAME,
1769 IDS_FLAGS_DISABLE_VIEWS_RECT_BASED_TARGETING_DESCRIPTION,
[email protected]42f5fe542014-07-25 17:59:331770 kOsCrOS | kOsWin | kOsLinux,
[email protected]88b47ad72013-11-21 03:34:381771 SINGLE_VALUE_TYPE(views::switches::kDisableViewsRectBasedTargeting)
[email protected]c4f51d22013-11-05 03:11:261772 },
lukene23094a2014-11-23 14:12:311773 {
luken30ef5622014-11-24 19:37:551774 "enable-link-disambiguation-popup",
1775 IDS_FLAGS_ENABLE_LINK_DISAMBIGUATION_POPUP_NAME,
1776 IDS_FLAGS_ENABLE_LINK_DISAMBIGUATION_POPUP_DESCRIPTION,
lukene23094a2014-11-23 14:12:311777 kOsCrOS | kOsWin,
luken30ef5622014-11-24 19:37:551778 SINGLE_VALUE_TYPE(switches::kEnableLinkDisambiguationPopup)
lukene23094a2014-11-23 14:12:311779 },
[email protected]c4f51d22013-11-05 03:11:261780#endif
thestigb012bc3d2014-09-18 22:57:131781#if defined(ENABLE_EXTENSIONS)
[email protected]9f268072013-11-07 00:02:151782 {
1783 "enable-apps-show-on-first-paint",
1784 IDS_FLAGS_ENABLE_APPS_SHOW_ON_FIRST_PAINT_NAME,
1785 IDS_FLAGS_ENABLE_APPS_SHOW_ON_FIRST_PAINT_DESCRIPTION,
1786 kOsDesktop,
[email protected]6fa202452014-08-19 05:34:071787 SINGLE_VALUE_TYPE(extensions::switches::kEnableAppsShowOnFirstPaint)
[email protected]9f268072013-11-07 00:02:151788 },
thestigb012bc3d2014-09-18 22:57:131789#endif
[email protected]12271632013-11-26 03:06:391790 {
[email protected]4d7552f2014-03-04 04:53:331791 "enhanced-bookmarks-experiment",
[email protected]12271632013-11-26 03:06:391792 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_NAME,
1793 IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_DESCRIPTION,
kkimlabseedd8b82014-09-05 13:01:091794 kOsDesktop | kOsAndroid,
[email protected]4d7552f2014-03-04 04:53:331795 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
1796 switches::kEnhancedBookmarksExperiment, "1",
1797 switches::kEnhancedBookmarksExperiment, "0")
[email protected]12271632013-11-26 03:06:391798 },
[email protected]d5874f12013-12-05 04:30:001799#if defined(OS_ANDROID)
1800 {
1801 "enable-zero-suggest-experiment",
1802 IDS_FLAGS_ZERO_SUGGEST_EXPERIMENT_NAME,
1803 IDS_FLAGS_ZERO_SUGGEST_EXPERIMENT_DESCRIPTION,
1804 kOsAndroid,
1805 MULTI_VALUE_TYPE(kZeroSuggestExperimentsChoices)
[email protected]1a82f7372013-12-06 12:46:521806 },
Yaron Friedman7f37900b2014-08-26 16:37:261807 {
cjhopman951bb612015-04-22 01:42:381808 "reader-mode-heuristics",
1809 IDS_FLAGS_READER_MODE_HEURISTICS_NAME,
1810 IDS_FLAGS_READER_MODE_HEURISTICS_DESCRIPTION,
1811 kOsAndroid,
1812 MULTI_VALUE_TYPE(kReaderModeHeuristicsChoices)
1813 },
1814 {
Yaron Friedman7f37900b2014-08-26 16:37:261815 "enable-reader-mode-toolbar-icon",
1816 IDS_FLAGS_READER_MODE_EXPERIMENT_NAME,
1817 IDS_FLAGS_READER_MODE_EXPERIMENT_DESCRIPTION,
1818 kOsAndroid,
1819 SINGLE_VALUE_TYPE(switches::kEnableReaderModeToolbarIcon)
1820 },
arusland4c3a502015-04-03 16:38:511821 {
1822 "enable-dom-distiller-button-animation",
1823 IDS_FLAGS_READER_MODE_BUTTON_ANIMATION,
1824 IDS_FLAGS_READER_MODE_BUTTON_ANIMATION_DESCRIPTION,
1825 kOsAndroid,
1826 SINGLE_VALUE_TYPE(switches::kEnableDomDistillerButtonAnimation)
1827 },
[email protected]d5874f12013-12-05 04:30:001828#endif
[email protected]1a82f7372013-12-06 12:46:521829 {
1830 "num-raster-threads",
1831 IDS_FLAGS_NUM_RASTER_THREADS_NAME,
1832 IDS_FLAGS_NUM_RASTER_THREADS_DESCRIPTION,
1833 kOsAll,
1834 MULTI_VALUE_TYPE(kNumRasterThreadsChoices)
[email protected]dc920d62013-12-13 22:12:471835 },
1836 {
brettwb505b7a2014-11-26 22:05:321837 "enable-single-click-autofill",
1838 IDS_FLAGS_ENABLE_SINGLE_CLICK_AUTOFILL_NAME,
1839 IDS_FLAGS_ENABLE_SINGLE_CLICK_AUTOFILL_DESCRIPTION,
rouslanc291fa672014-12-04 23:45:161840 kOsCrOS | kOsMac | kOsWin | kOsLinux | kOsAndroid,
brettwb505b7a2014-11-26 22:05:321841 ENABLE_DISABLE_VALUE_TYPE(
1842 autofill::switches::kEnableSingleClickAutofill,
1843 autofill::switches::kDisableSingleClickAutofill)
1844 },
1845 {
[email protected]24ad58782014-01-23 23:43:451846 "enable-permissions-bubbles",
1847 IDS_FLAGS_ENABLE_PERMISSIONS_BUBBLES_NAME,
1848 IDS_FLAGS_ENABLE_PERMISSIONS_BUBBLES_DESCRIPTION,
[email protected]4e6d54a2014-06-27 14:32:121849 kOsCrOS | kOsMac | kOsWin | kOsLinux,
[email protected]7d198222014-06-17 08:24:221850 ENABLE_DISABLE_VALUE_TYPE(switches::kEnablePermissionsBubbles,
1851 switches::kDisablePermissionsBubbles)
[email protected]24ad58782014-01-23 23:43:451852 },
[email protected]4d11b08b2014-01-27 22:19:071853 {
benwellsedf5e082015-04-23 02:45:141854 "enable-site-engagement-service",
1855 IDS_FLAGS_ENABLE_SITE_ENGAGEMENT_SERVICE_NAME,
1856 IDS_FLAGS_ENABLE_SITE_ENGAGEMENT_SERVICE_DESCRIPTION,
1857 kOsAll,
1858 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSiteEngagementService,
1859 switches::kDisableSiteEngagementService)
1860 },
1861 {
[email protected]546d8d32014-04-30 15:40:461862 "enable-session-crashed-bubble",
1863 IDS_FLAGS_ENABLE_SESSION_CRASHED_BUBBLE_NAME,
1864 IDS_FLAGS_ENABLE_SESSION_CRASHED_BUBBLE_DESCRIPTION,
1865 kOsWin | kOsLinux,
[email protected]3d990b72014-05-27 21:16:131866 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSessionCrashedBubble,
1867 switches::kDisableSessionCrashedBubble)
[email protected]546d8d32014-04-30 15:40:461868 },
1869 {
alexandreca3f5c412015-02-05 00:53:341870 "enable-pdf-material-ui",
1871 IDS_FLAGS_PDF_MATERIAL_UI_NAME,
1872 IDS_FLAGS_PDF_MATERIAL_UI_DESCRIPTION,
1873 kOsDesktop,
1874 ENABLE_DISABLE_VALUE_TYPE(switches::kEnablePdfMaterialUI,
1875 switches::kDisablePdfMaterialUI)
1876 },
1877 {
hclam674f12e2014-11-06 00:25:181878 "disable-cast-streaming-hw-encoding",
1879 IDS_FLAGS_DISABLE_CAST_STREAMING_HW_ENCODING_NAME,
1880 IDS_FLAGS_DISABLE_CAST_STREAMING_HW_ENCODING_DESCRIPTION,
1881 kOsAll,
1882 SINGLE_VALUE_TYPE(switches::kDisableCastStreamingHWEncoding)
1883 },
[email protected]181624c2014-02-04 17:03:341884#if defined(OS_ANDROID)
1885 {
[email protected]276bdfa52014-02-24 14:03:091886 "disable-cast",
1887 IDS_FLAGS_DISABLE_CAST_NAME,
1888 IDS_FLAGS_DISABLE_CAST_DESCRIPTION,
[email protected]30a8cec92014-02-24 10:09:091889 kOsAndroid,
[email protected]276bdfa52014-02-24 14:03:091890 SINGLE_VALUE_TYPE(switches::kDisableCast)
[email protected]30a8cec92014-02-24 10:09:091891 },
[email protected]99af9382014-02-12 09:02:551892 {
1893 "prefetch-search-results",
1894 IDS_FLAGS_PREFETCH_SEARCH_RESULTS_NAME,
1895 IDS_FLAGS_PREFETCH_SEARCH_RESULTS_DESCRIPTION,
[email protected]8ca7e09c2014-06-17 18:42:031896 kOsAndroid,
[email protected]99af9382014-02-12 09:02:551897 SINGLE_VALUE_TYPE(switches::kPrefetchSearchResults)
1898 },
[email protected]8ca7e09c2014-06-17 18:42:031899#endif
[email protected]9bd76572014-02-17 05:17:311900#if defined(ENABLE_APP_LIST)
1901 {
1902 "enable-experimental-app-list",
1903 IDS_FLAGS_ENABLE_EXPERIMENTAL_APP_LIST_NAME,
1904 IDS_FLAGS_ENABLE_EXPERIMENTAL_APP_LIST_DESCRIPTION,
1905 kOsWin | kOsLinux | kOsCrOS,
calamity9b4f185b2014-11-26 00:54:551906 ENABLE_DISABLE_VALUE_TYPE(app_list::switches::kEnableExperimentalAppList,
1907 app_list::switches::kDisableExperimentalAppList)
[email protected]9bd76572014-02-17 05:17:311908 },
[email protected]b18d51182014-03-13 10:38:271909 {
[email protected]61bce6992014-05-02 17:35:571910 "enable-centered-app-list",
1911 IDS_FLAGS_ENABLE_CENTERED_APP_LIST_NAME,
1912 IDS_FLAGS_ENABLE_CENTERED_APP_LIST_DESCRIPTION,
[email protected]b18d51182014-03-13 10:38:271913 kOsWin | kOsLinux | kOsCrOS,
[email protected]61bce6992014-05-02 17:35:571914 SINGLE_VALUE_TYPE(app_list::switches::kEnableCenteredAppList)
[email protected]b18d51182014-03-13 10:38:271915 },
[email protected]9bd76572014-02-17 05:17:311916#endif
[email protected]f42cffb2014-03-08 18:03:251917 {
jdduke2eee6cb2014-09-25 17:02:211918 "disable-threaded-scrolling",
1919 IDS_FLAGS_DISABLE_THREADED_SCROLLING_NAME,
1920 IDS_FLAGS_DISABLE_THREADED_SCROLLING_DESCRIPTION,
jdduke896a4d482015-04-02 02:05:181921 kOsWin | kOsLinux | kOsCrOS | kOsAndroid | kOsMac,
jdduke2eee6cb2014-09-25 17:02:211922 SINGLE_VALUE_TYPE(switches::kDisableThreadedScrolling)
1923 },
1924 {
[email protected]67c5a212014-03-17 12:28:001925 "bleeding-edge-renderer-mode",
1926 IDS_FLAGS_BLEEDING_RENDERER_NAME,
1927 IDS_FLAGS_BLEEDING_RENDERER_DESCRIPTION,
[email protected]a8a97512014-03-24 18:28:201928 kOsAndroid,
[email protected]67c5a212014-03-17 12:28:001929 SINGLE_VALUE_TYPE(switches::kEnableBleedingEdgeRenderingFastPaths)
1930 },
[email protected]8a585cb2014-03-21 17:13:521931 {
1932 "enable-settings-window",
1933 IDS_FLAGS_ENABLE_SETTINGS_WINDOW_NAME,
1934 IDS_FLAGS_ENABLE_SETTINGS_WINDOW_DESCRIPTION,
1935 kOsDesktop,
asvitkinebff63b22014-11-25 01:03:521936 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSettingsWindow,
1937 switches::kDisableSettingsWindow)
[email protected]8a585cb2014-03-21 17:13:521938 },
[email protected]812b82a2014-05-15 19:01:381939#if defined(OS_ANDROID)
1940 {
1941 "enable-instant-search-clicks",
1942 IDS_FLAGS_ENABLE_INSTANT_SEARCH_CLICKS_NAME,
1943 IDS_FLAGS_ENABLE_INSTANT_SEARCH_CLICKS_DESCRIPTION,
1944 kOsAndroid,
1945 SINGLE_VALUE_TYPE(switches::kEnableInstantSearchClicks)
1946 },
1947#endif
[email protected]4dffb662014-03-31 11:31:221948 {
1949 "enable-save-password-bubble",
1950 IDS_FLAGS_ENABLE_SAVE_PASSWORD_BUBBLE_NAME,
1951 IDS_FLAGS_ENABLE_SAVE_PASSWORD_BUBBLE_DESCRIPTION,
dconnelly35f985b32014-08-29 10:40:551952 kOsWin | kOsLinux | kOsCrOS | kOsMac,
[email protected]ea61c082014-04-07 16:57:241953 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSavePasswordBubble,
1954 switches::kDisableSavePasswordBubble)
[email protected]9804dad9102014-04-01 09:34:181955 },
[email protected]64505f72014-04-29 11:07:521956 {
1957 "enable-apps-file-associations",
1958 IDS_FLAGS_ENABLE_APPS_FILE_ASSOCIATIONS_NAME,
1959 IDS_FLAGS_ENABLE_APPS_FILE_ASSOCIATIONS_DESCRIPTION,
1960 kOsMac,
1961 SINGLE_VALUE_TYPE(switches::kEnableAppsFileAssociations)
1962 },
[email protected]0443e082014-04-30 04:52:501963#if defined(OS_ANDROID)
1964 {
1965 "enable-embeddedsearch-api",
1966 IDS_FLAGS_ENABLE_EMBEDDEDSEARCH_API_NAME,
1967 IDS_FLAGS_ENABLE_EMBEDDEDSEARCH_API_DESCRIPTION,
1968 kOsAndroid,
1969 SINGLE_VALUE_TYPE(switches::kEnableEmbeddedSearchAPI)
1970 },
1971#endif
[email protected]b242b142014-05-07 14:48:491972 {
1973 "distance-field-text",
1974 IDS_FLAGS_DISTANCE_FIELD_TEXT_NAME,
1975 IDS_FLAGS_DISTANCE_FIELD_TEXT_DESCRIPTION,
1976 kOsAll,
asvitkinebff63b22014-11-25 01:03:521977 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableDistanceFieldText,
1978 switches::kDisableDistanceFieldText)
[email protected]b242b142014-05-07 14:48:491979 },
[email protected]6f8ede32014-05-09 13:58:451980 {
1981 "extension-content-verification",
1982 IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_NAME,
1983 IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_DESCRIPTION,
1984 kOsDesktop,
1985 MULTI_VALUE_TYPE(kExtensionContentVerificationChoices)
1986 },
[email protected]8f374ce2014-05-08 23:51:521987#if defined(USE_AURA)
1988 {
1989 "text-input-focus-manager",
1990 IDS_FLAGS_TEXT_INPUT_FOCUS_MANAGER_NAME,
1991 IDS_FLAGS_TEXT_INPUT_FOCUS_MANAGER_DESCRIPTION,
1992 kOsCrOS | kOsLinux | kOsWin,
1993 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTextInputFocusManager,
1994 switches::kDisableTextInputFocusManager)
1995 },
1996#endif
thestigb012bc3d2014-09-18 22:57:131997#if defined(ENABLE_EXTENSIONS)
[email protected]98585412014-05-13 19:01:371998 {
1999 "extension-active-script-permission",
2000 IDS_FLAGS_USER_CONSENT_FOR_EXTENSION_SCRIPTS_NAME,
2001 IDS_FLAGS_USER_CONSENT_FOR_EXTENSION_SCRIPTS_DESCRIPTION,
2002 kOsAll,
2003 SINGLE_VALUE_TYPE(extensions::switches::kEnableScriptsRequireAction)
2004 },
thestigb012bc3d2014-09-18 22:57:132005#endif
[email protected]1c790df2014-06-03 22:51:122006 {
[email protected]85f710c2014-06-20 17:29:112007 "answers-in-suggest",
[email protected]1c790df2014-06-03 22:51:122008 IDS_FLAGS_ENABLE_ANSWERS_IN_SUGGEST_NAME,
2009 IDS_FLAGS_ENABLE_ANSWERS_IN_SUGGEST_DESCRIPTION,
dschuylercaad96232015-04-13 22:22:502010 kOsAndroid | kOsDesktop,
asvitkinebff63b22014-11-25 01:03:522011 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableAnswersInSuggest,
2012 switches::kDisableAnswersInSuggest)
[email protected]1c790df2014-06-03 22:51:122013 },
[email protected]3dfb4012014-06-11 07:33:382014#if defined(OS_ANDROID)
2015 {
2016 "enable-data-reduction-proxy-dev",
2017 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_DEV_NAME,
2018 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_DEV_DESCRIPTION,
2019 kOsAndroid,
2020 ENABLE_DISABLE_VALUE_TYPE(
2021 data_reduction_proxy::switches::kEnableDataReductionProxyDev,
2022 data_reduction_proxy::switches::kDisableDataReductionProxyDev)
2023 },
bengr470a8592014-10-24 00:31:482024 {
2025 "enable-data-reduction-proxy-alt",
2026 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_ALTERNATIVE_NAME,
2027 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_ALTERNATIVE_DESCRIPTION,
2028 kOsAndroid,
2029 SINGLE_VALUE_TYPE(
2030 data_reduction_proxy::switches::kEnableDataReductionProxyAlt)
2031 },
[email protected]3dfb4012014-06-11 07:33:382032#endif
[email protected]48e67ee72014-07-01 06:53:432033 {
rlp69ebfce2014-11-18 21:03:462034 "enable-hotword-hardware",
2035 IDS_FLAGS_ENABLE_EXPERIMENTAL_HOTWORD_HARDWARE_NAME,
2036 IDS_FLAGS_ENABLE_EXPERIMENTAL_HOTWORD_HARDWARE_DESCRIPTION,
2037 kOsCrOS,
2038 SINGLE_VALUE_TYPE(switches::kEnableExperimentalHotwordHardware)
2039 },
thestigb012bc3d2014-09-18 22:57:132040#if defined(ENABLE_EXTENSIONS)
[email protected]409d9202014-07-08 01:32:412041 {
Ken Rockot19f0e7f2014-09-15 23:54:272042 "enable-embedded-extension-options",
2043 IDS_FLAGS_ENABLE_EMBEDDED_EXTENSION_OPTIONS_NAME,
2044 IDS_FLAGS_ENABLE_EMBEDDED_EXTENSION_OPTIONS_DESCRIPTION,
2045 kOsDesktop,
2046 SINGLE_VALUE_TYPE(extensions::switches::kEnableEmbeddedExtensionOptions)
2047 },
thestigb012bc3d2014-09-18 22:57:132048#endif
benwells89df4192014-12-16 08:30:182049#if defined(USE_ASH)
2050 {
2051 "enable-web-app-frame",
2052 IDS_FLAGS_ENABLE_WEB_APP_FRAME_NAME,
2053 IDS_FLAGS_ENABLE_WEB_APP_FRAME_DESCRIPTION,
2054 kOsWin | kOsCrOS,
2055 SINGLE_VALUE_TYPE(switches::kEnableWebAppFrame)
2056 },
2057#endif
Ken Rockot19f0e7f2014-09-15 23:54:272058 {
[email protected]3ba3eb712014-07-16 07:47:192059 "enable-website-settings-manager",
2060 IDS_FLAGS_ENABLE_WEBSITE_SETTINGS_NAME,
2061 IDS_FLAGS_ENABLE_WEBSITE_SETTINGS_DESCRIPTION,
2062 kOsDesktop,
2063 SINGLE_VALUE_TYPE(switches::kEnableWebsiteSettingsManager)
2064 },
[email protected]c5bbe0e2014-08-01 23:23:302065 {
2066 "remember-cert-error-decisions",
2067 IDS_FLAGS_REMEMBER_CERTIFICATE_ERROR_DECISIONS_NAME,
2068 IDS_FLAGS_REMEMBER_CERTIFICATE_ERROR_DECISIONS_DESCRIPTION,
2069 kOsAll,
2070 MULTI_VALUE_TYPE(kRememberCertificateErrorDecisionsChoices)
2071 },
[email protected]bdbf5cb2014-08-07 23:38:082072 {
2073 "enable-drop-sync-credential",
2074 IDS_FLAGS_ENABLE_DROP_SYNC_CREDENTIAL_NAME,
2075 IDS_FLAGS_ENABLE_DROP_SYNC_CREDENTIAL_DESCRIPTION,
2076 kOsAll,
asvitkinebff63b22014-11-25 01:03:522077 ENABLE_DISABLE_VALUE_TYPE(
2078 password_manager::switches::kEnableDropSyncCredential,
2079 password_manager::switches::kDisableDropSyncCredential)
[email protected]2f0b7e0f2014-08-15 02:18:232080 },
thestigb012bc3d2014-09-18 22:57:132081#if defined(ENABLE_EXTENSIONS)
[email protected]2f0b7e0f2014-08-15 02:18:232082 {
2083 "enable-extension-action-redesign",
2084 IDS_FLAGS_ENABLE_EXTENSION_ACTION_REDESIGN_NAME,
2085 IDS_FLAGS_ENABLE_EXTENSION_ACTION_REDESIGN_DESCRIPTION,
rdevlin.cronind187a832015-01-06 01:15:522086 kOsDesktop,
[email protected]2f0b7e0f2014-08-15 02:18:232087 SINGLE_VALUE_TYPE(extensions::switches::kEnableExtensionActionRedesign)
2088 },
thestigb012bc3d2014-09-18 22:57:132089#endif
[email protected]524dd702014-08-16 00:00:452090 {
2091 "autofill-sync-credential",
2092 IDS_FLAGS_AUTOFILL_SYNC_CREDENTIAL_NAME,
2093 IDS_FLAGS_AUTOFILL_SYNC_CREDENTIAL_DESCRIPTION,
2094 kOsAll,
2095 MULTI_VALUE_TYPE(kAutofillSyncCredentialChoices)
2096 },
juyika7be5192014-08-26 23:01:042097#if !defined(OS_ANDROID)
2098 {
2099 "enable-message-center-always-scroll-up-upon-notification-removal",
2100 IDS_FLAGS_ENABLE_MESSAGE_CENTER_ALWAYS_SCROLL_UP_UPON_REMOVAL_NAME,
2101 IDS_FLAGS_ENABLE_MESSAGE_CENTER_ALWAYS_SCROLL_UP_UPON_REMOVAL_DESCRIPTION,
2102 kOsDesktop,
2103 SINGLE_VALUE_TYPE(
2104 switches::kEnableMessageCenterAlwaysScrollUpUponNotificationRemoval)
2105 },
orenb5ee85fa2015-02-04 20:03:572106 {
2107 "enable-md-settings",
2108 IDS_FLAGS_ENABLE_MATERIAL_DESIGN_SETTINGS_NAME,
2109 IDS_FLAGS_ENABLE_MATERIAL_DESIGN_SETTINGS_DESCRIPTION,
2110 kOsDesktop,
2111 SINGLE_VALUE_TYPE(
2112 switches::kEnableMaterialDesignSettings)
2113 },
juyika7be5192014-08-26 23:01:042114#endif
chirantan6e3f35b2014-09-16 02:06:112115#if defined(OS_CHROMEOS)
2116 {
skuhned17538a2015-01-15 15:53:092117 "disable-memory-pressure-chromeos",
2118 IDS_FLAGS_DISABLE_MEMORY_PRESSURE_NAME,
2119 IDS_FLAGS_DISABLE_MEMORY_PRESSURE_DESCRIPTION,
skuhnef3f301b2014-12-10 21:04:142120 kOsCrOS,
skuhned17538a2015-01-15 15:53:092121 SINGLE_VALUE_TYPE(chromeos::switches::kDisableMemoryPressureSystemChromeOS)
skuhnef3f301b2014-12-10 21:04:142122 },
2123 {
skuhnef6f74b02015-01-22 00:05:342124 "memory-pressure-thresholds",
2125 IDS_FLAGS_MEMORY_PRESSURE_THRESHOLD_NAME,
2126 IDS_FLAGS_MEMORY_PRESSURE_THRESHOLD_DESCRIPTION,
2127 kOsCrOS,
2128 MULTI_VALUE_TYPE(kMemoryPressureThresholdChoices)
2129 },
2130 {
chirantan6e3f35b2014-09-16 02:06:112131 "wake-on-packets",
2132 IDS_FLAGS_WAKE_ON_PACKETS_NAME,
2133 IDS_FLAGS_WAKE_ON_PACKETS_DESCRIPTION,
2134 kOsCrOSOwnerOnly,
2135 SINGLE_VALUE_TYPE(chromeos::switches::kWakeOnPackets)
2136 },
2137#endif // OS_CHROMEOS
miu094342f2014-09-26 03:09:462138 {
2139 "enable-tab-audio-muting",
2140 IDS_FLAGS_ENABLE_TAB_AUDIO_MUTING_NAME,
2141 IDS_FLAGS_ENABLE_TAB_AUDIO_MUTING_DESCRIPTION,
miu2178ec82014-11-01 01:59:062142 kOsDesktop,
miu094342f2014-09-26 03:09:462143 SINGLE_VALUE_TYPE(switches::kEnableTabAudioMuting)
2144 },
mkwst531d29fa2014-10-02 09:42:072145 {
2146 "enable-credential-manager-api",
2147 IDS_FLAGS_CREDENTIAL_MANAGER_API_NAME,
2148 IDS_FLAGS_CREDENTIAL_MANAGER_API_DESCRIPTION,
2149 kOsAll,
2150 SINGLE_VALUE_TYPE(switches::kEnableCredentialManagerAPI)
2151 },
mkwstae2d60392014-11-11 07:41:452152 {
2153 "reduced-referrer-granularity",
2154 IDS_FLAGS_REDUCED_REFERRER_GRANULARITY_NAME,
2155 IDS_FLAGS_REDUCED_REFERRER_GRANULARITY_DESCRIPTION,
2156 kOsAll,
2157 SINGLE_VALUE_TYPE(switches::kReducedReferrerGranularity)
2158 },
tommycli3c366b32014-10-06 23:05:462159#if defined(ENABLE_PLUGINS)
2160 {
2161 "enable-plugin-power-saver",
2162 IDS_FLAGS_ENABLE_PLUGIN_POWER_SAVER_NAME,
2163 IDS_FLAGS_ENABLE_PLUGIN_POWER_SAVER_DESCRIPTION,
2164 kOsDesktop,
dbeam155ac972015-04-20 15:34:482165 ENABLE_DISABLE_VALUE_TYPE(plugins::switches::kEnablePluginPowerSaver,
2166 plugins::switches::kDisablePluginPowerSaver)
tommycli3c366b32014-10-06 23:05:462167 },
2168#endif
kelvinp3b73f5092014-10-07 21:49:392169#if defined(OS_CHROMEOS)
2170 {
mtomasz644ca402014-10-30 00:51:372171 "disable-new-zip-unpacker",
2172 IDS_FLAGS_DISABLE_NEW_ZIP_UNPACKER_NAME,
2173 IDS_FLAGS_DISABLE_NEW_ZIP_UNPACKER_DESCRIPTION,
2174 kOsCrOS,
2175 SINGLE_VALUE_TYPE(chromeos::switches::kDisableNewZIPUnpacker)
agl0a4a16342014-11-05 04:17:052176 },
kelvinp3b73f5092014-10-07 21:49:392177#endif // defined(OS_CHROMEOS)
agl0a4a16342014-11-05 04:17:052178 {
2179 "ssl-version-min",
2180 IDS_FLAGS_SSL_VERSION_MIN_NAME,
2181 IDS_FLAGS_SSL_VERSION_MIN_DESCRIPTION,
2182 kOsAll,
2183 MULTI_VALUE_TYPE(kSSLVersionMinChoices)
2184 },
rouslan497109da2014-11-26 20:30:342185 {
2186 "enable-credit-card-scan",
2187 IDS_FLAGS_ENABLE_CREDIT_CARD_SCAN_NAME,
2188 IDS_FLAGS_ENABLE_CREDIT_CARD_SCAN_DESCRIPTION,
2189 kOsAndroid,
rouslanb3361bca2014-12-10 23:26:442190 ENABLE_DISABLE_VALUE_TYPE(autofill::switches::kEnableCreditCardScan,
2191 autofill::switches::kDisableCreditCardScan)
rouslan497109da2014-11-26 20:30:342192 },
alemate94e69ad2014-11-27 17:30:282193#if defined(OS_CHROMEOS)
2194 {
alemate2a7034b62015-04-01 16:06:252195 "disable-captive-portal-bypass-proxy",
2196 IDS_FLAGS_DISABLE_CAPTIVE_PORTAL_BYPASS_PROXY_NAME,
2197 IDS_FLAGS_DISABLE_CAPTIVE_PORTAL_BYPASS_PROXY_DESCRIPTION,
alemate94e69ad2014-11-27 17:30:282198 kOsCrOS,
alemate2a7034b62015-04-01 16:06:252199 SINGLE_VALUE_TYPE(chromeos::switches::kDisableCaptivePortalBypassProxy)
alemate94e69ad2014-11-27 17:30:282200 },
2201#endif // defined(OS_CHROMEOS)
rseseka30ebba2014-12-01 21:55:542202#if defined(OS_ANDROID)
2203 {
2204 "enable-seccomp-filter-sandbox",
2205 IDS_FLAGS_ENABLE_SECCOMP_FILTER_SANDBOX_ANDROID_NAME,
2206 IDS_FLAGS_ENABLE_SECCOMP_FILTER_SANDBOX_ANDROID_DESCRIPTION,
2207 kOsAndroid,
2208 SINGLE_VALUE_TYPE(switches::kEnableSeccompFilterSandbox)
2209 },
2210#endif
lanweid74bc3e12014-12-03 23:12:292211 {
2212 "enable-touch-hover",
2213 IDS_FLAGS_ENABLE_TOUCH_HOVER_NAME,
2214 IDS_FLAGS_ENABLE_TOUCH_HOVER_DESCRIPTION,
2215 kOsAndroid,
2216 SINGLE_VALUE_TYPE("enable-touch-hover")
2217 },
jww20355072014-12-12 21:00:552218 {
2219 "enable-fill-on-account-select",
2220 IDS_FILL_ON_ACCOUNT_SELECT_NAME,
2221 IDS_FILL_ON_ACCOUNT_SELECT_DESCRIPTION,
2222 kOsAll,
jwwc3ab6e7b2014-12-23 18:16:182223 MULTI_VALUE_TYPE(kFillOnAccountSelectChoices)
jww20355072014-12-12 21:00:552224 },
quiche4ab49112015-01-05 18:07:492225#if defined(OS_CHROMEOS)
2226 {
2227 "enable-wifi-credential-sync", // FLAGS:RECORD_UMA
2228 IDS_FLAGS_ENABLE_WIFI_CREDENTIAL_SYNC_NAME,
2229 IDS_FLAGS_ENABLE_WIFI_CREDENTIAL_SYNC_DESCRIPTION,
2230 kOsCrOS,
2231 SINGLE_VALUE_TYPE(switches::kEnableWifiCredentialSync)
2232 },
mkwst05544102015-01-10 20:26:162233 {
2234 "enable-potentially-annoying-security-features",
2235 IDS_FLAGS_EXPERIMENTAL_SECURITY_FEATURES_NAME,
2236 IDS_FLAGS_EXPERIMENTAL_SECURITY_FEATURES_DESCRIPTION,
2237 kOsAll,
2238 SINGLE_VALUE_TYPE(switches::kEnablePotentiallyAnnoyingSecurityFeatures)
2239 },
quiche4ab49112015-01-05 18:07:492240#endif
bjornv3a1fa642015-01-13 09:19:012241 {
bjornv7f74ea22015-05-08 13:04:052242 "disable-delay-agnostic-aec",
2243 IDS_FLAGS_DISABLE_DELAY_AGNOSTIC_AEC_NAME,
2244 IDS_FLAGS_DISABLE_DELAY_AGNOSTIC_AEC_DESCRIPTION,
2245 kOsDesktop,
2246 SINGLE_VALUE_TYPE(switches::kDisableDelayAgnosticAec)
2247 },
2248 {
bjornv3a1fa642015-01-13 09:19:012249 "enable-delay-agnostic-aec",
2250 IDS_FLAGS_ENABLE_DELAY_AGNOSTIC_AEC_NAME,
2251 IDS_FLAGS_ENABLE_DELAY_AGNOSTIC_AEC_DESCRIPTION,
2252 kOsDesktop,
2253 SINGLE_VALUE_TYPE(switches::kEnableDelayAgnosticAec)
2254 },
palmer601fe3c2015-01-23 20:43:022255 {
2256 "mark-non-secure-as", // FLAGS:RECORD_UMA
2257 IDS_MARK_NON_SECURE_AS_NAME,
2258 IDS_MARK_NON_SECURE_AS_DESCRIPTION,
2259 kOsAll,
2260 MULTI_VALUE_TYPE(kMarkNonSecureAsChoices)
2261 },
dchenge52b2342015-01-27 22:45:422262 {
2263 "enable-site-per-process",
2264 IDS_FLAGS_ENABLE_SITE_PER_PROCESS_NAME,
2265 IDS_FLAGS_ENABLE_SITE_PER_PROCESS_DESCRIPTION,
2266 kOsAll,
2267 SINGLE_VALUE_TYPE(switches::kSitePerProcess)
2268 },
derata55b0115d2015-02-03 01:59:082269#if defined(OS_MACOSX)
2270 {
2271 "enable-harfbuzz-rendertext",
2272 IDS_FLAGS_ENABLE_HARFBUZZ_RENDERTEXT_NAME,
2273 IDS_FLAGS_ENABLE_HARFBUZZ_RENDERTEXT_DESCRIPTION,
2274 kOsMac,
2275 SINGLE_VALUE_TYPE(switches::kEnableHarfBuzzRenderText)
2276 },
2277#endif // defined(OS_MACOSX)
alemate48255f3d2015-01-30 18:11:412278#if defined(OS_CHROMEOS)
2279 {
alematebe310d4a2015-02-06 17:28:572280 "disable-timezone-tracking",
2281 IDS_FLAGS_DISABLE_RESOLVE_TIMEZONE_BY_GEOLOCATION_NAME,
2282 IDS_FLAGS_DISABLE_RESOLVE_TIMEZONE_BY_GEOLOCATION_DESCRIPTION,
alemate48255f3d2015-01-30 18:11:412283 kOsCrOS,
alematebe310d4a2015-02-06 17:28:572284 SINGLE_VALUE_TYPE(chromeos::switches::kDisableTimeZoneTrackingOption)
alemate48255f3d2015-01-30 18:11:412285 },
ginkage716cae5b2015-03-13 09:26:022286 {
2287 "disable-webview-signin-flow",
2288 IDS_FLAGS_DISABLE_WEBVIEW_SIGNIN_FLOW_NAME,
2289 IDS_FLAGS_DISABLE_WEBVIEW_SIGNIN_FLOW_DESCRIPTION,
2290 kOsCrOS,
2291 SINGLE_VALUE_TYPE(chromeos::switches::kDisableWebviewSigninFlow)
2292 },
alemate48255f3d2015-01-30 18:11:412293#endif // defined(OS_CHROMEOS)
megjablon2fca6992015-02-12 23:23:282294 {
2295 "enable-data-reduction-proxy-lo-fi",
2296 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_LO_FI_NAME,
2297 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_LO_FI_DESCRIPTION,
2298 kOsAll,
2299 SINGLE_VALUE_TYPE(data_reduction_proxy::switches::
2300 kEnableDataReductionProxyLoFi)
2301 },
kundaji0cf4c5c2015-03-17 17:35:032302 {
2303 "clear-data-reduction-proxy-data-savings",
2304 IDS_FLAGS_DATA_REDUCTION_PROXY_RESET_SAVINGS_NAME,
2305 IDS_FLAGS_DATA_REDUCTION_PROXY_RESET_SAVINGS_DESCRIPTION,
2306 kOsAll,
2307 SINGLE_VALUE_TYPE(data_reduction_proxy::switches::
2308 kClearDataReductionProxyDataSavings)
2309 },
megjablon5effca2e2015-02-13 23:54:072310#if defined(ENABLE_DATA_REDUCTION_PROXY_DEBUGGING)
2311 {
2312 "enable-data-reduction-proxy-bypass-warnings",
2313 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_BYPASS_WARNING_NAME,
2314 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_BYPASS_WARNING_DESCRIPTION,
2315 kOsAndroid,
2316 SINGLE_VALUE_TYPE(data_reduction_proxy::switches::
2317 kEnableDataReductionProxyBypassWarning)
2318 },
2319#endif
estark4b003b332015-02-14 01:07:052320 {
2321 "allow-insecure-localhost",
2322 IDS_ALLOW_INSECURE_LOCALHOST,
2323 IDS_ALLOW_INSECURE_LOCALHOST_DESCRIPTION,
2324 kOsAll,
2325 SINGLE_VALUE_TYPE(switches::kAllowInsecureLocalhost)
2326 },
benwells2367f4302015-02-16 03:46:512327 {
2328 "bypass-app-banner-engagement-checks",
2329 IDS_FLAGS_BYPASS_APP_BANNER_ENGAGEMENT_CHECKS_NAME,
2330 IDS_FLAGS_BYPASS_APP_BANNER_ENGAGEMENT_CHECKS_DESCRIPTION,
2331 kOsAndroid,
2332 SINGLE_VALUE_TYPE(switches::kBypassAppBannerEngagementChecks)
2333 },
estadee7acd2db2015-02-19 17:57:092334 {
2335 "use-sync-sandbox",
2336 IDS_FLAGS_SYNC_SANDBOX_NAME,
2337 IDS_FLAGS_SYNC_SANDBOX_DESCRIPTION,
2338 kOsAll,
2339 SINGLE_VALUE_TYPE_AND_VALUE(
2340 switches::kSyncServiceURL,
2341 "https://chrome-sync.sandbox.google.com/chrome-sync/alpha")
2342 },
treib5b732682015-03-10 14:19:192343 {
2344 "enable-child-account-detection",
2345 IDS_FLAGS_CHILD_ACCOUNT_DETECTION_NAME,
2346 IDS_FLAGS_CHILD_ACCOUNT_DETECTION_DESCRIPTION,
2347 kOsAndroid | kOsMac | kOsWin | kOsLinux | kOsCrOS,
2348 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableChildAccountDetection,
2349 switches::kDisableChildAccountDetection)
2350 },
alexst24a14a322015-03-10 21:06:092351#if defined(OS_CHROMEOS) && defined(USE_OZONE)
2352 {
2353 "ozone-test-single-overlay-support",
2354 IDS_FLAGS_OZONE_TEST_SINGLE_HARDWARE_OVERLAY,
2355 IDS_FLAGS_OZONE_TEST_SINGLE_HARDWARE_OVERLAY_DESCRIPTION,
2356 kOsCrOS,
2357 SINGLE_VALUE_TYPE(switches::kOzoneTestSingleOverlaySupport)
2358 },
2359#endif // defined(OS_CHROMEOS) && defined(USE_OZONE)
amistry3f8e83b2015-03-13 07:31:512360 {
2361 "v8-pac-mojo-out-of-process",
2362 IDS_FLAGS_V8_PAC_MOJO_OUT_OF_PROCESS_NAME,
2363 IDS_FLAGS_V8_PAC_MOJO_OUT_OF_PROCESS_DESCRIPTION,
2364 kOsDesktop,
2365 SINGLE_VALUE_TYPE(switches::kV8PacMojoOutOfProcess),
2366 },
reillygbed8fdc2015-03-13 19:41:442367#if defined(OS_CHROMEOS)
2368 {
2369 "enable-firewall-hole-punching",
2370 IDS_FLAGS_ENABLE_FIREWALL_HOLE_PUNCHING_NAME,
2371 IDS_FLAGS_ENABLE_FIREWALL_HOLE_PUNCHING_DESCRIPTION,
2372 kOsCrOS,
2373 SINGLE_VALUE_TYPE(chromeos::switches::kEnableFirewallHolePunching)
2374 },
2375#endif // defined(OS_CHROMEOS)
mfoltz150bb8b2015-04-09 22:30:052376#if defined(ENABLE_MEDIA_ROUTER)
apacible4a0e88b2015-03-21 01:13:152377 {
2378 "enable-media-router",
2379 IDS_FLAGS_ENABLE_MEDIA_ROUTER_NAME,
2380 IDS_FLAGS_ENABLE_MEDIA_ROUTER_DESCRIPTION,
2381 kOsAll,
2382 SINGLE_VALUE_TYPE(switches::kEnableMediaRouter)
estark93272ab2015-03-25 23:54:012383 },
mfoltz150bb8b2015-04-09 22:30:052384#endif // defined(ENABLE_MEDIA_ROUTER)
yawanoaf1ed792015-04-02 05:48:192385// Since kEnableLauncherSearchProviderApi is not available when app list is
2386// disabled, flag guard enable-launcher-search-provider-api.
2387#if defined(ENABLE_APP_LIST)
2388 {
2389 "enable-launcher-search-provider-api",
2390 IDS_FLAGS_ENABLE_LAUNCHER_SEARCH_PROVIDER_API,
2391 IDS_FLAGS_ENABLE_LAUNCHER_SEARCH_PROVIDER_API_DESCRIPTION,
2392 kOsCrOS,
2393 SINGLE_VALUE_TYPE(app_list::switches::kEnableLauncherSearchProviderApi)
2394 },
2395#endif // defined(ENABLE_APP_LIST)
yawanoe6a41b12015-04-03 07:51:592396#if defined(OS_CHROMEOS)
2397 {
yawano6c3dabc2015-05-07 05:35:152398 "disable-mtp-write-support",
2399 IDS_FLAG_DISABLE_MTP_WRITE_SUPPORT_NAME,
2400 IDS_FLAG_DISABLE_MTP_WRITE_SUPPORT_DESCRIPTION,
yawanoe6a41b12015-04-03 07:51:592401 kOsCrOS,
yawano6c3dabc2015-05-07 05:35:152402 SINGLE_VALUE_TYPE(chromeos::switches::kDisableMtpWriteSupport)
yawanoe6a41b12015-04-03 07:51:592403 },
2404#endif // defined(OS_CHROMEOS)
glevin6ac071f72015-04-07 21:47:322405#if defined(OS_CHROMEOS)
2406 {
2407 "enable-datasaver-prompt",
2408 IDS_FLAGS_DATASAVER_PROMPT_NAME,
2409 IDS_FLAGS_DATASAVER_PROMPT_DESCRIPTION,
2410 kOsCrOS,
2411 MULTI_VALUE_TYPE(kDataSaverPromptChoices)
2412 },
2413#endif // defined(OS_CHROMEOS)
treibe2082a0e2015-04-08 10:15:302414 {
2415 "supervised-user-safesites",
2416 IDS_FLAGS_SUPERVISED_USER_SAFESITES_NAME,
2417 IDS_FLAGS_SUPERVISED_USER_SAFESITES_DESCRIPTION,
2418 kOsAndroid | kOsMac | kOsWin | kOsLinux | kOsCrOS,
2419 MULTI_VALUE_TYPE(kSupervisedUserSafeSitesChoices)
2420 },
estadeb5efbab62015-04-28 18:07:422421#if defined(OS_ANDROID)
2422 {
2423 "enable-autofill-keyboard-accessory-view",
2424 IDS_FLAGS_AUTOFILL_ACCESSORY_VIEW_NAME,
2425 IDS_FLAGS_AUTOFILL_ACCESSORY_VIEW_DESCRIPTION,
2426 kOsAndroid,
2427 SINGLE_VALUE_TYPE(autofill::switches::kEnableAccessorySuggestionView)
2428 },
2429#endif // defined(OS_ANDROID)
dalecurtisf28f0e52015-05-01 07:08:252430 {
dalecurtis70c8cfa2015-05-05 19:58:502431 "disable-new-video-renderer",
2432 IDS_FLAGS_DISABLE_NEW_VIDEO_RENDERER_NAME,
2433 IDS_FLAGS_DISABLE_NEW_VIDEO_RENDERER_DESCRIPTION,
dalecurtisf28f0e52015-05-01 07:08:252434 kOsAll,
dalecurtis70c8cfa2015-05-05 19:58:502435 SINGLE_VALUE_TYPE(switches::kDisableNewVideoRenderer)
dalecurtisf28f0e52015-05-01 07:08:252436 },
rbyers3f362dc2015-05-07 16:20:312437 // Temporary flag to ease the transition to standard-compliant scrollTop
2438 // behavior. Will be removed shortly after http://crbug.com/157855 ships.
2439 {
2440 "scroll-top-left-interop",
2441 IDS_FLAGS_SCROLL_TOP_LEFT_INTEROP_NAME,
2442 IDS_FLAGS_SCROLL_TOP_LEFT_INTEROP_DESCRIPTION,
2443 kOsAll,
2444 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
2445 switches::kEnableBlinkFeatures, "ScrollTopLeftInterop",
2446 switches::kDisableBlinkFeatures, "ScrollTopLeftInterop")
2447 }
[email protected]4b66a7d2014-08-15 17:13:312448 // NOTE: Adding new command-line switches requires adding corresponding
2449 // entries to enum "LoginCustomFlags" in histograms.xml. See note in
2450 // histograms.xml and don't forget to run AboutFlagsHistogramTest unit test.
[email protected]a0e4b072011-08-17 01:47:072451};
[email protected]ad2a3ded2010-08-27 13:19:052452
[email protected]a314ee5a2010-10-26 21:23:282453const Experiment* experiments = kExperiments;
2454size_t num_experiments = arraysize(kExperiments);
2455
[email protected]e2ddbc92010-10-15 20:02:072456// Stores and encapsulates the little state that about:flags has.
2457class FlagsState {
2458 public:
2459 FlagsState() : needs_restart_(false) {}
[email protected]e6d1c4f2013-06-12 17:37:402460 void ConvertFlagsToSwitches(FlagsStorage* flags_storage,
avi3ef9ec9e2014-12-22 22:50:172461 base::CommandLine* command_line,
[email protected]578f2092013-09-16 17:16:212462 SentinelsMode sentinels);
[email protected]e2ddbc92010-10-15 20:02:072463 bool IsRestartNeededToCommitChanges();
2464 void SetExperimentEnabled(
[email protected]e6d1c4f2013-06-12 17:37:402465 FlagsStorage* flags_storage,
2466 const std::string& internal_name,
2467 bool enable);
[email protected]e2ddbc92010-10-15 20:02:072468 void RemoveFlagsSwitches(
avi3ef9ec9e2014-12-22 22:50:172469 std::map<std::string, base::CommandLine::StringType>* switch_list);
[email protected]e6d1c4f2013-06-12 17:37:402470 void ResetAllFlags(FlagsStorage* flags_storage);
[email protected]e2ddbc92010-10-15 20:02:072471 void reset();
2472
2473 // Returns the singleton instance of this class
[email protected]8e8bb6d2010-12-13 08:18:552474 static FlagsState* GetInstance() {
[email protected]e2ddbc92010-10-15 20:02:072475 return Singleton<FlagsState>::get();
2476 }
2477
2478 private:
2479 bool needs_restart_;
[email protected]a82744532011-02-11 16:15:532480 std::map<std::string, std::string> flags_switches_;
[email protected]e2ddbc92010-10-15 20:02:072481
2482 DISALLOW_COPY_AND_ASSIGN(FlagsState);
2483};
2484
[email protected]8a6ff28d2010-12-02 16:35:192485// Adds the internal names for the specified experiment to |names|.
2486void AddInternalName(const Experiment& e, std::set<std::string>* names) {
2487 if (e.type == Experiment::SINGLE_VALUE) {
2488 names->insert(e.internal_name);
2489 } else {
[email protected]83e9fa702013-02-25 19:30:442490 DCHECK(e.type == Experiment::MULTI_VALUE ||
2491 e.type == Experiment::ENABLE_DISABLE_VALUE);
[email protected]8a6ff28d2010-12-02 16:35:192492 for (int i = 0; i < e.num_choices; ++i)
[email protected]83e9fa702013-02-25 19:30:442493 names->insert(e.NameForChoice(i));
[email protected]8a6ff28d2010-12-02 16:35:192494 }
2495}
2496
[email protected]28e35af2011-02-09 12:56:222497// Confirms that an experiment is valid, used in a DCHECK in
2498// SanitizeList below.
2499bool ValidateExperiment(const Experiment& e) {
2500 switch (e.type) {
2501 case Experiment::SINGLE_VALUE:
2502 DCHECK_EQ(0, e.num_choices);
2503 DCHECK(!e.choices);
2504 break;
2505 case Experiment::MULTI_VALUE:
2506 DCHECK_GT(e.num_choices, 0);
2507 DCHECK(e.choices);
[email protected]a82744532011-02-11 16:15:532508 DCHECK(e.choices[0].command_line_switch);
2509 DCHECK_EQ('\0', e.choices[0].command_line_switch[0]);
[email protected]28e35af2011-02-09 12:56:222510 break;
[email protected]83e9fa702013-02-25 19:30:442511 case Experiment::ENABLE_DISABLE_VALUE:
2512 DCHECK_EQ(3, e.num_choices);
2513 DCHECK(!e.choices);
2514 DCHECK(e.command_line_switch);
2515 DCHECK(e.command_line_value);
2516 DCHECK(e.disable_command_line_switch);
2517 DCHECK(e.disable_command_line_value);
2518 break;
[email protected]28e35af2011-02-09 12:56:222519 default:
2520 NOTREACHED();
2521 }
2522 return true;
2523}
2524
[email protected]ad2a3ded2010-08-27 13:19:052525// Removes all experiments from prefs::kEnabledLabsExperiments that are
2526// unknown, to prevent this list to become very long as experiments are added
2527// and removed.
[email protected]e6d1c4f2013-06-12 17:37:402528void SanitizeList(FlagsStorage* flags_storage) {
[email protected]ad2a3ded2010-08-27 13:19:052529 std::set<std::string> known_experiments;
[email protected]28e35af2011-02-09 12:56:222530 for (size_t i = 0; i < num_experiments; ++i) {
2531 DCHECK(ValidateExperiment(experiments[i]));
[email protected]8a6ff28d2010-12-02 16:35:192532 AddInternalName(experiments[i], &known_experiments);
[email protected]28e35af2011-02-09 12:56:222533 }
[email protected]ad2a3ded2010-08-27 13:19:052534
[email protected]07d666d2013-07-21 23:56:262535 std::set<std::string> enabled_experiments = flags_storage->GetFlags();
[email protected]ad2a3ded2010-08-27 13:19:052536
[email protected]09f3fde82014-05-14 15:08:152537 std::set<std::string> new_enabled_experiments =
2538 base::STLSetIntersection<std::set<std::string> >(
2539 known_experiments, enabled_experiments);
[email protected]ad2a3ded2010-08-27 13:19:052540
[email protected]07d666d2013-07-21 23:56:262541 if (new_enabled_experiments != enabled_experiments)
[email protected]e6d1c4f2013-06-12 17:37:402542 flags_storage->SetFlags(new_enabled_experiments);
[email protected]ad2a3ded2010-08-27 13:19:052543}
2544
[email protected]1a47d7e2010-10-15 00:37:242545void GetSanitizedEnabledFlags(
[email protected]e6d1c4f2013-06-12 17:37:402546 FlagsStorage* flags_storage, std::set<std::string>* result) {
2547 SanitizeList(flags_storage);
2548 *result = flags_storage->GetFlags();
[email protected]ad2a3ded2010-08-27 13:19:052549}
2550
yefimff0c52f2014-09-24 20:19:502551bool SkipConditionalExperiment(const Experiment& experiment,
2552 FlagsStorage* flags_storage) {
megjablon5effca2e2015-02-13 23:54:072553#if defined(OS_ANDROID) || defined(ENABLE_DATA_REDUCTION_PROXY_DEBUGGING)
2554 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel();
2555#endif
2556
[email protected]3dfb4012014-06-11 07:33:382557#if defined(OS_ANDROID)
bolian44ee3baf2014-10-01 02:41:542558 // enable-data-reduction-proxy-dev is only available for the Dev/Beta channel.
[email protected]3dfb4012014-06-11 07:33:382559 if (!strcmp("enable-data-reduction-proxy-dev", experiment.internal_name) &&
megjablon5effca2e2015-02-13 23:54:072560 channel != chrome::VersionInfo::CHANNEL_BETA &&
2561 channel != chrome::VersionInfo::CHANNEL_DEV) {
[email protected]3dfb4012014-06-11 07:33:382562 return true;
2563 }
bengr470a8592014-10-24 00:31:482564 // enable-data-reduction-proxy-alt is only available for the Dev channel.
2565 if (!strcmp("enable-data-reduction-proxy-alt", experiment.internal_name) &&
megjablon5effca2e2015-02-13 23:54:072566 channel != chrome::VersionInfo::CHANNEL_DEV) {
bengr470a8592014-10-24 00:31:482567 return true;
2568 }
megjablon2fca6992015-02-12 23:23:282569 // enable-data-reduction-proxy-lo-fi is only available for Chromium builds and
2570 // the Canary/Dev channel.
2571 if (!strcmp("enable-data-reduction-proxy-lo-fi", experiment.internal_name) &&
megjablon5effca2e2015-02-13 23:54:072572 channel != chrome::VersionInfo::CHANNEL_DEV &&
2573 channel != chrome::VersionInfo::CHANNEL_CANARY &&
2574 channel != chrome::VersionInfo::CHANNEL_UNKNOWN) {
2575 return true;
2576 }
2577#endif
2578
2579#if defined(ENABLE_DATA_REDUCTION_PROXY_DEBUGGING)
2580 // enable-data-reduction-proxy-bypass-warning is only available for Chromium
2581 // builds and Canary/Dev channel.
2582 if (!strcmp("enable-data-reduction-proxy-bypass-warnings",
2583 experiment.internal_name) &&
2584 channel != chrome::VersionInfo::CHANNEL_UNKNOWN &&
2585 channel != chrome::VersionInfo::CHANNEL_CANARY &&
2586 channel != chrome::VersionInfo::CHANNEL_DEV) {
megjablon2fca6992015-02-12 23:23:282587 return true;
2588 }
[email protected]3dfb4012014-06-11 07:33:382589#endif
2590
[email protected]12271632013-11-26 03:06:392591 return false;
2592}
2593
2594
[email protected]a314ee5a2010-10-26 21:23:282595// Variant of GetSanitizedEnabledFlags that also removes any flags that aren't
2596// enabled on the current platform.
2597void GetSanitizedEnabledFlagsForCurrentPlatform(
[email protected]e6d1c4f2013-06-12 17:37:402598 FlagsStorage* flags_storage, std::set<std::string>* result) {
2599 GetSanitizedEnabledFlags(flags_storage, result);
[email protected]a314ee5a2010-10-26 21:23:282600
2601 // Filter out any experiments that aren't enabled on the current platform. We
2602 // don't remove these from prefs else syncing to a platform with a different
2603 // set of experiments would be lossy.
2604 std::set<std::string> platform_experiments;
2605 int current_platform = GetCurrentPlatform();
2606 for (size_t i = 0; i < num_experiments; ++i) {
2607 if (experiments[i].supported_platforms & current_platform)
[email protected]8a6ff28d2010-12-02 16:35:192608 AddInternalName(experiments[i], &platform_experiments);
[email protected]37736bd2013-04-18 11:53:582609#if defined(OS_CHROMEOS)
2610 if (experiments[i].supported_platforms & kOsCrOSOwnerOnly)
2611 AddInternalName(experiments[i], &platform_experiments);
2612#endif
[email protected]a314ee5a2010-10-26 21:23:282613 }
2614
[email protected]09f3fde82014-05-14 15:08:152615 std::set<std::string> new_enabled_experiments =
2616 base::STLSetIntersection<std::set<std::string> >(
2617 platform_experiments, *result);
[email protected]a314ee5a2010-10-26 21:23:282618
2619 result->swap(new_enabled_experiments);
[email protected]ad2a3ded2010-08-27 13:19:052620}
2621
[email protected]8a6ff28d2010-12-02 16:35:192622// Returns the Value representing the choice data in the specified experiment.
[email protected]5bcdd99d2013-12-23 18:28:302623base::Value* CreateChoiceData(
2624 const Experiment& experiment,
2625 const std::set<std::string>& enabled_experiments) {
[email protected]83e9fa702013-02-25 19:30:442626 DCHECK(experiment.type == Experiment::MULTI_VALUE ||
2627 experiment.type == Experiment::ENABLE_DISABLE_VALUE);
[email protected]5bcdd99d2013-12-23 18:28:302628 base::ListValue* result = new base::ListValue;
[email protected]8a6ff28d2010-12-02 16:35:192629 for (int i = 0; i < experiment.num_choices; ++i) {
[email protected]5bcdd99d2013-12-23 18:28:302630 base::DictionaryValue* value = new base::DictionaryValue;
[email protected]83e9fa702013-02-25 19:30:442631 const std::string name = experiment.NameForChoice(i);
[email protected]8a6ff28d2010-12-02 16:35:192632 value->SetString("internal_name", name);
[email protected]83e9fa702013-02-25 19:30:442633 value->SetString("description", experiment.DescriptionForChoice(i));
[email protected]28e35af2011-02-09 12:56:222634 value->SetBoolean("selected", enabled_experiments.count(name) > 0);
[email protected]8a6ff28d2010-12-02 16:35:192635 result->Append(value);
2636 }
2637 return result;
2638}
2639
[email protected]e2ddbc92010-10-15 20:02:072640} // namespace
2641
[email protected]83e9fa702013-02-25 19:30:442642std::string Experiment::NameForChoice(int index) const {
2643 DCHECK(type == Experiment::MULTI_VALUE ||
2644 type == Experiment::ENABLE_DISABLE_VALUE);
2645 DCHECK_LT(index, num_choices);
2646 return std::string(internal_name) + testing::kMultiSeparator +
2647 base::IntToString(index);
2648}
2649
[email protected]96920152013-12-04 21:00:162650base::string16 Experiment::DescriptionForChoice(int index) const {
[email protected]83e9fa702013-02-25 19:30:442651 DCHECK(type == Experiment::MULTI_VALUE ||
2652 type == Experiment::ENABLE_DISABLE_VALUE);
2653 DCHECK_LT(index, num_choices);
2654 int description_id;
2655 if (type == Experiment::ENABLE_DISABLE_VALUE) {
2656 const int kEnableDisableDescriptionIds[] = {
2657 IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT,
2658 IDS_GENERIC_EXPERIMENT_CHOICE_ENABLED,
2659 IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED,
2660 };
2661 description_id = kEnableDisableDescriptionIds[index];
2662 } else {
2663 description_id = choices[index].description_id;
2664 }
2665 return l10n_util::GetStringUTF16(description_id);
2666}
2667
[email protected]e6d1c4f2013-06-12 17:37:402668void ConvertFlagsToSwitches(FlagsStorage* flags_storage,
avi3ef9ec9e2014-12-22 22:50:172669 base::CommandLine* command_line,
[email protected]578f2092013-09-16 17:16:212670 SentinelsMode sentinels) {
[email protected]e6d1c4f2013-06-12 17:37:402671 FlagsState::GetInstance()->ConvertFlagsToSwitches(flags_storage,
[email protected]578f2092013-09-16 17:16:212672 command_line,
2673 sentinels);
[email protected]ad2a3ded2010-08-27 13:19:052674}
2675
[email protected]6d98abf2013-06-17 23:35:512676bool AreSwitchesIdenticalToCurrentCommandLine(
avi3ef9ec9e2014-12-22 22:50:172677 const base::CommandLine& new_cmdline,
2678 const base::CommandLine& active_cmdline,
2679 std::set<base::CommandLine::StringType>* out_difference) {
2680 std::set<base::CommandLine::StringType> new_flags =
[email protected]6d98abf2013-06-17 23:35:512681 ExtractFlagsFromCommandLine(new_cmdline);
avi3ef9ec9e2014-12-22 22:50:172682 std::set<base::CommandLine::StringType> active_flags =
[email protected]6d98abf2013-06-17 23:35:512683 ExtractFlagsFromCommandLine(active_cmdline);
2684
[email protected]4b66a7d2014-08-15 17:13:312685 bool result = false;
[email protected]6d98abf2013-06-17 23:35:512686 // Needed because std::equal doesn't check if the 2nd set is empty.
[email protected]4b66a7d2014-08-15 17:13:312687 if (new_flags.size() == active_flags.size()) {
2688 result =
2689 std::equal(new_flags.begin(), new_flags.end(), active_flags.begin());
2690 }
[email protected]6d98abf2013-06-17 23:35:512691
[email protected]4b66a7d2014-08-15 17:13:312692 if (out_difference && !result) {
2693 std::set_symmetric_difference(
2694 new_flags.begin(),
2695 new_flags.end(),
2696 active_flags.begin(),
2697 active_flags.end(),
2698 std::inserter(*out_difference, out_difference->begin()));
2699 }
2700
2701 return result;
[email protected]6d98abf2013-06-17 23:35:512702}
2703
[email protected]e6d1c4f2013-06-12 17:37:402704void GetFlagsExperimentsData(FlagsStorage* flags_storage,
[email protected]ee28495a2013-05-20 04:10:522705 FlagAccess access,
2706 base::ListValue* supported_experiments,
2707 base::ListValue* unsupported_experiments) {
[email protected]ad2a3ded2010-08-27 13:19:052708 std::set<std::string> enabled_experiments;
[email protected]e6d1c4f2013-06-12 17:37:402709 GetSanitizedEnabledFlags(flags_storage, &enabled_experiments);
[email protected]ad2a3ded2010-08-27 13:19:052710
2711 int current_platform = GetCurrentPlatform();
2712
[email protected]a314ee5a2010-10-26 21:23:282713 for (size_t i = 0; i < num_experiments; ++i) {
2714 const Experiment& experiment = experiments[i];
yefimff0c52f2014-09-24 20:19:502715 if (SkipConditionalExperiment(experiment, flags_storage))
[email protected]12271632013-11-26 03:06:392716 continue;
[email protected]ad2a3ded2010-08-27 13:19:052717
[email protected]5bcdd99d2013-12-23 18:28:302718 base::DictionaryValue* data = new base::DictionaryValue();
[email protected]ad2a3ded2010-08-27 13:19:052719 data->SetString("internal_name", experiment.internal_name);
2720 data->SetString("name",
2721 l10n_util::GetStringUTF16(experiment.visible_name_id));
2722 data->SetString("description",
2723 l10n_util::GetStringUTF16(
2724 experiment.visible_description_id));
[email protected]cc3e2052011-12-20 01:01:402725
[email protected]5bcdd99d2013-12-23 18:28:302726 base::ListValue* supported_platforms = new base::ListValue();
[email protected]cc3e2052011-12-20 01:01:402727 AddOsStrings(experiment.supported_platforms, supported_platforms);
2728 data->Set("supported_platforms", supported_platforms);
[email protected]ad2a3ded2010-08-27 13:19:052729
[email protected]28e35af2011-02-09 12:56:222730 switch (experiment.type) {
2731 case Experiment::SINGLE_VALUE:
2732 data->SetBoolean(
2733 "enabled",
2734 enabled_experiments.count(experiment.internal_name) > 0);
2735 break;
2736 case Experiment::MULTI_VALUE:
[email protected]83e9fa702013-02-25 19:30:442737 case Experiment::ENABLE_DISABLE_VALUE:
[email protected]28e35af2011-02-09 12:56:222738 data->Set("choices", CreateChoiceData(experiment, enabled_experiments));
2739 break;
2740 default:
2741 NOTREACHED();
[email protected]8a6ff28d2010-12-02 16:35:192742 }
2743
[email protected]ee28495a2013-05-20 04:10:522744 bool supported = (experiment.supported_platforms & current_platform) != 0;
2745#if defined(OS_CHROMEOS)
2746 if (access == kOwnerAccessToFlags &&
2747 (experiment.supported_platforms & kOsCrOSOwnerOnly) != 0) {
2748 supported = true;
2749 }
2750#endif
2751 if (supported)
2752 supported_experiments->Append(data);
2753 else
2754 unsupported_experiments->Append(data);
[email protected]ad2a3ded2010-08-27 13:19:052755 }
[email protected]ad2a3ded2010-08-27 13:19:052756}
2757
[email protected]ad2a3ded2010-08-27 13:19:052758bool IsRestartNeededToCommitChanges() {
[email protected]8e8bb6d2010-12-13 08:18:552759 return FlagsState::GetInstance()->IsRestartNeededToCommitChanges();
[email protected]ad2a3ded2010-08-27 13:19:052760}
2761
[email protected]e6d1c4f2013-06-12 17:37:402762void SetExperimentEnabled(FlagsStorage* flags_storage,
2763 const std::string& internal_name,
2764 bool enable) {
2765 FlagsState::GetInstance()->SetExperimentEnabled(flags_storage,
2766 internal_name, enable);
[email protected]e2ddbc92010-10-15 20:02:072767}
2768
2769void RemoveFlagsSwitches(
avi3ef9ec9e2014-12-22 22:50:172770 std::map<std::string, base::CommandLine::StringType>* switch_list) {
[email protected]8e8bb6d2010-12-13 08:18:552771 FlagsState::GetInstance()->RemoveFlagsSwitches(switch_list);
[email protected]e2ddbc92010-10-15 20:02:072772}
2773
[email protected]e6d1c4f2013-06-12 17:37:402774void ResetAllFlags(FlagsStorage* flags_storage) {
2775 FlagsState::GetInstance()->ResetAllFlags(flags_storage);
[email protected]cb93bf52013-02-20 01:20:002776}
2777
[email protected]a314ee5a2010-10-26 21:23:282778int GetCurrentPlatform() {
2779#if defined(OS_MACOSX)
2780 return kOsMac;
2781#elif defined(OS_WIN)
2782 return kOsWin;
2783#elif defined(OS_CHROMEOS) // Needs to be before the OS_LINUX check.
2784 return kOsCrOS;
[email protected]c92f4ed2011-10-21 19:50:212785#elif defined(OS_LINUX) || defined(OS_OPENBSD)
[email protected]a314ee5a2010-10-26 21:23:282786 return kOsLinux;
[email protected]9c7453d2012-01-21 00:45:402787#elif defined(OS_ANDROID)
2788 return kOsAndroid;
[email protected]a314ee5a2010-10-26 21:23:282789#else
2790#error Unknown platform
2791#endif
2792}
2793
[email protected]e6d1c4f2013-06-12 17:37:402794void RecordUMAStatistics(FlagsStorage* flags_storage) {
2795 std::set<std::string> flags = flags_storage->GetFlags();
asvitkinebff63b22014-11-25 01:03:522796 for (const std::string& flag : flags) {
[email protected]4bc5050c2010-11-18 17:55:542797 std::string action("AboutFlags_");
asvitkinebff63b22014-11-25 01:03:522798 action += flag;
[email protected]7f6f44c2011-12-14 13:23:382799 content::RecordComputedAction(action);
[email protected]4bc5050c2010-11-18 17:55:542800 }
2801 // Since flag metrics are recorded every startup, add a tick so that the
2802 // stats can be made meaningful.
2803 if (flags.size())
asvitkinebff63b22014-11-25 01:03:522804 content::RecordAction(base::UserMetricsAction("AboutFlags_StartupTick"));
2805 content::RecordAction(base::UserMetricsAction("StartupTick"));
[email protected]4bc5050c2010-11-18 17:55:542806}
2807
alemate0107c3272014-09-03 04:30:042808base::HistogramBase::Sample GetSwitchUMAId(const std::string& switch_name) {
2809 return static_cast<base::HistogramBase::Sample>(
2810 metrics::HashMetricName(switch_name));
[email protected]4b66a7d2014-08-15 17:13:312811}
2812
2813void ReportCustomFlags(const std::string& uma_histogram_hame,
2814 const std::set<std::string>& command_line_difference) {
asvitkinebff63b22014-11-25 01:03:522815 for (const std::string& flag : command_line_difference) {
2816 int uma_id = about_flags::testing::kBadSwitchFormatHistogramId;
2817 if (StartsWithASCII(flag, "--", true /* case_sensitive */)) {
[email protected]4b66a7d2014-08-15 17:13:312818 // Skip '--' before switch name.
asvitkinebff63b22014-11-25 01:03:522819 std::string switch_name(flag.substr(2));
[email protected]4b66a7d2014-08-15 17:13:312820
2821 // Kill value, if any.
2822 const size_t value_pos = switch_name.find('=');
2823 if (value_pos != std::string::npos)
2824 switch_name.resize(value_pos);
2825
2826 uma_id = GetSwitchUMAId(switch_name);
2827 } else {
asvitkinebff63b22014-11-25 01:03:522828 NOTREACHED() << "ReportCustomFlags(): flag '" << flag
[email protected]4b66a7d2014-08-15 17:13:312829 << "' has incorrect format.";
2830 }
2831 DVLOG(1) << "ReportCustomFlags(): histogram='" << uma_histogram_hame
asvitkinebff63b22014-11-25 01:03:522832 << "' '" << flag << "', uma_id=" << uma_id;
[email protected]4b66a7d2014-08-15 17:13:312833
2834 // Sparse histogram macro does not cache the histogram, so it's safe
2835 // to use macro with non-static histogram name here.
2836 UMA_HISTOGRAM_SPARSE_SLOWLY(uma_histogram_hame, uma_id);
2837 }
2838}
2839
[email protected]e2ddbc92010-10-15 20:02:072840//////////////////////////////////////////////////////////////////////////////
2841// FlagsState implementation.
2842
2843namespace {
2844
[email protected]83e9fa702013-02-25 19:30:442845typedef std::map<std::string, std::pair<std::string, std::string> >
2846 NameToSwitchAndValueMap;
2847
2848void SetFlagToSwitchMapping(const std::string& key,
2849 const std::string& switch_name,
2850 const std::string& switch_value,
2851 NameToSwitchAndValueMap* name_to_switch_map) {
2852 DCHECK(name_to_switch_map->end() == name_to_switch_map->find(key));
2853 (*name_to_switch_map)[key] = std::make_pair(switch_name, switch_value);
2854}
2855
[email protected]578f2092013-09-16 17:16:212856void FlagsState::ConvertFlagsToSwitches(FlagsStorage* flags_storage,
avi3ef9ec9e2014-12-22 22:50:172857 base::CommandLine* command_line,
[email protected]578f2092013-09-16 17:16:212858 SentinelsMode sentinels) {
[email protected]e2ddbc92010-10-15 20:02:072859 if (command_line->HasSwitch(switches::kNoExperiments))
2860 return;
2861
2862 std::set<std::string> enabled_experiments;
[email protected]ba8164242010-11-16 21:31:002863
[email protected]e6d1c4f2013-06-12 17:37:402864 GetSanitizedEnabledFlagsForCurrentPlatform(flags_storage,
2865 &enabled_experiments);
[email protected]e2ddbc92010-10-15 20:02:072866
[email protected]a82744532011-02-11 16:15:532867 NameToSwitchAndValueMap name_to_switch_map;
[email protected]8a6ff28d2010-12-02 16:35:192868 for (size_t i = 0; i < num_experiments; ++i) {
2869 const Experiment& e = experiments[i];
2870 if (e.type == Experiment::SINGLE_VALUE) {
[email protected]83e9fa702013-02-25 19:30:442871 SetFlagToSwitchMapping(e.internal_name, e.command_line_switch,
2872 e.command_line_value, &name_to_switch_map);
2873 } else if (e.type == Experiment::MULTI_VALUE) {
2874 for (int j = 0; j < e.num_choices; ++j) {
2875 SetFlagToSwitchMapping(e.NameForChoice(j),
2876 e.choices[j].command_line_switch,
2877 e.choices[j].command_line_value,
2878 &name_to_switch_map);
2879 }
[email protected]8a6ff28d2010-12-02 16:35:192880 } else {
[email protected]83e9fa702013-02-25 19:30:442881 DCHECK_EQ(e.type, Experiment::ENABLE_DISABLE_VALUE);
2882 SetFlagToSwitchMapping(e.NameForChoice(0), std::string(), std::string(),
2883 &name_to_switch_map);
2884 SetFlagToSwitchMapping(e.NameForChoice(1), e.command_line_switch,
2885 e.command_line_value, &name_to_switch_map);
2886 SetFlagToSwitchMapping(e.NameForChoice(2), e.disable_command_line_switch,
2887 e.disable_command_line_value, &name_to_switch_map);
[email protected]8a6ff28d2010-12-02 16:35:192888 }
2889 }
[email protected]e2ddbc92010-10-15 20:02:072890
[email protected]578f2092013-09-16 17:16:212891 if (sentinels == kAddSentinels) {
2892 command_line->AppendSwitch(switches::kFlagSwitchesBegin);
2893 flags_switches_.insert(
2894 std::pair<std::string, std::string>(switches::kFlagSwitchesBegin,
2895 std::string()));
2896 }
asvitkinebff63b22014-11-25 01:03:522897 for (const std::string& experiment_name : enabled_experiments) {
[email protected]a82744532011-02-11 16:15:532898 NameToSwitchAndValueMap::const_iterator name_to_switch_it =
[email protected]8a6ff28d2010-12-02 16:35:192899 name_to_switch_map.find(experiment_name);
2900 if (name_to_switch_it == name_to_switch_map.end()) {
2901 NOTREACHED();
[email protected]e2ddbc92010-10-15 20:02:072902 continue;
[email protected]8a6ff28d2010-12-02 16:35:192903 }
[email protected]e2ddbc92010-10-15 20:02:072904
[email protected]a82744532011-02-11 16:15:532905 const std::pair<std::string, std::string>&
2906 switch_and_value_pair = name_to_switch_it->second;
2907
[email protected]9737b3632013-08-26 09:23:232908 CHECK(!switch_and_value_pair.first.empty());
[email protected]a82744532011-02-11 16:15:532909 command_line->AppendSwitchASCII(switch_and_value_pair.first,
2910 switch_and_value_pair.second);
2911 flags_switches_[switch_and_value_pair.first] = switch_and_value_pair.second;
[email protected]e2ddbc92010-10-15 20:02:072912 }
[email protected]578f2092013-09-16 17:16:212913 if (sentinels == kAddSentinels) {
2914 command_line->AppendSwitch(switches::kFlagSwitchesEnd);
2915 flags_switches_.insert(
2916 std::pair<std::string, std::string>(switches::kFlagSwitchesEnd,
2917 std::string()));
2918 }
[email protected]e2ddbc92010-10-15 20:02:072919}
2920
2921bool FlagsState::IsRestartNeededToCommitChanges() {
2922 return needs_restart_;
2923}
2924
[email protected]e6d1c4f2013-06-12 17:37:402925void FlagsState::SetExperimentEnabled(FlagsStorage* flags_storage,
2926 const std::string& internal_name,
2927 bool enable) {
[email protected]83e9fa702013-02-25 19:30:442928 size_t at_index = internal_name.find(testing::kMultiSeparator);
[email protected]8a6ff28d2010-12-02 16:35:192929 if (at_index != std::string::npos) {
2930 DCHECK(enable);
2931 // We're being asked to enable a multi-choice experiment. Disable the
2932 // currently selected choice.
2933 DCHECK_NE(at_index, 0u);
[email protected]28e35af2011-02-09 12:56:222934 const std::string experiment_name = internal_name.substr(0, at_index);
[email protected]e6d1c4f2013-06-12 17:37:402935 SetExperimentEnabled(flags_storage, experiment_name, false);
[email protected]8a6ff28d2010-12-02 16:35:192936
[email protected]28e35af2011-02-09 12:56:222937 // And enable the new choice, if it is not the default first choice.
2938 if (internal_name != experiment_name + "@0") {
2939 std::set<std::string> enabled_experiments;
[email protected]e6d1c4f2013-06-12 17:37:402940 GetSanitizedEnabledFlags(flags_storage, &enabled_experiments);
[email protected]147492b2013-03-19 23:52:082941 needs_restart_ |= enabled_experiments.insert(internal_name).second;
[email protected]e6d1c4f2013-06-12 17:37:402942 flags_storage->SetFlags(enabled_experiments);
[email protected]28e35af2011-02-09 12:56:222943 }
[email protected]8a6ff28d2010-12-02 16:35:192944 return;
2945 }
2946
[email protected]ad2a3ded2010-08-27 13:19:052947 std::set<std::string> enabled_experiments;
[email protected]e6d1c4f2013-06-12 17:37:402948 GetSanitizedEnabledFlags(flags_storage, &enabled_experiments);
[email protected]ad2a3ded2010-08-27 13:19:052949
[email protected]8a6ff28d2010-12-02 16:35:192950 const Experiment* e = NULL;
2951 for (size_t i = 0; i < num_experiments; ++i) {
2952 if (experiments[i].internal_name == internal_name) {
2953 e = experiments + i;
2954 break;
2955 }
2956 }
2957 DCHECK(e);
2958
2959 if (e->type == Experiment::SINGLE_VALUE) {
[email protected]8a2713682011-08-19 10:36:592960 if (enable)
[email protected]147492b2013-03-19 23:52:082961 needs_restart_ |= enabled_experiments.insert(internal_name).second;
[email protected]8a2713682011-08-19 10:36:592962 else
[email protected]147492b2013-03-19 23:52:082963 needs_restart_ |= (enabled_experiments.erase(internal_name) > 0);
[email protected]8a6ff28d2010-12-02 16:35:192964 } else {
2965 if (enable) {
2966 // Enable the first choice.
[email protected]147492b2013-03-19 23:52:082967 needs_restart_ |= enabled_experiments.insert(e->NameForChoice(0)).second;
[email protected]8a6ff28d2010-12-02 16:35:192968 } else {
2969 // Find the currently enabled choice and disable it.
2970 for (int i = 0; i < e->num_choices; ++i) {
[email protected]83e9fa702013-02-25 19:30:442971 std::string choice_name = e->NameForChoice(i);
[email protected]8a6ff28d2010-12-02 16:35:192972 if (enabled_experiments.find(choice_name) !=
2973 enabled_experiments.end()) {
[email protected]147492b2013-03-19 23:52:082974 needs_restart_ = true;
[email protected]8a6ff28d2010-12-02 16:35:192975 enabled_experiments.erase(choice_name);
2976 // Continue on just in case there's a bug and more than one
2977 // experiment for this choice was enabled.
2978 }
2979 }
2980 }
2981 }
[email protected]ad2a3ded2010-08-27 13:19:052982
[email protected]e6d1c4f2013-06-12 17:37:402983 flags_storage->SetFlags(enabled_experiments);
[email protected]ad2a3ded2010-08-27 13:19:052984}
2985
[email protected]e2ddbc92010-10-15 20:02:072986void FlagsState::RemoveFlagsSwitches(
avi3ef9ec9e2014-12-22 22:50:172987 std::map<std::string, base::CommandLine::StringType>* switch_list) {
asvitkinebff63b22014-11-25 01:03:522988 for (const auto& entry : flags_switches_)
2989 switch_list->erase(entry.first);
[email protected]e2ddbc92010-10-15 20:02:072990}
2991
[email protected]e6d1c4f2013-06-12 17:37:402992void FlagsState::ResetAllFlags(FlagsStorage* flags_storage) {
[email protected]cb93bf52013-02-20 01:20:002993 needs_restart_ = true;
2994
2995 std::set<std::string> no_experiments;
[email protected]e6d1c4f2013-06-12 17:37:402996 flags_storage->SetFlags(no_experiments);
[email protected]cb93bf52013-02-20 01:20:002997}
2998
[email protected]e2ddbc92010-10-15 20:02:072999void FlagsState::reset() {
3000 needs_restart_ = false;
3001 flags_switches_.clear();
3002}
3003
[email protected]38e46812011-05-09 20:49:223004} // namespace
[email protected]e2ddbc92010-10-15 20:02:073005
3006namespace testing {
[email protected]8a6ff28d2010-12-02 16:35:193007
3008// WARNING: '@' is also used in the html file. If you update this constant you
3009// also need to update the html file.
3010const char kMultiSeparator[] = "@";
3011
asvitkinebff63b22014-11-25 01:03:523012const base::HistogramBase::Sample kBadSwitchFormatHistogramId = 0;
3013
[email protected]e2ddbc92010-10-15 20:02:073014void ClearState() {
[email protected]8e8bb6d2010-12-13 08:18:553015 FlagsState::GetInstance()->reset();
[email protected]e2ddbc92010-10-15 20:02:073016}
[email protected]a314ee5a2010-10-26 21:23:283017
3018void SetExperiments(const Experiment* e, size_t count) {
3019 if (!e) {
3020 experiments = kExperiments;
3021 num_experiments = arraysize(kExperiments);
3022 } else {
3023 experiments = e;
3024 num_experiments = count;
3025 }
3026}
3027
[email protected]8a6ff28d2010-12-02 16:35:193028const Experiment* GetExperiments(size_t* count) {
3029 *count = num_experiments;
3030 return experiments;
3031}
3032
[email protected]e2ddbc92010-10-15 20:02:073033} // namespace testing
3034
[email protected]1a47d7e2010-10-15 00:37:243035} // namespace about_flags