OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/about_flags.h" | 5 #include "chrome/browser/about_flags.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <iterator> | 10 #include <iterator> |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 void AddOsStrings(unsigned bitmask, ListValue* list) { | 78 void AddOsStrings(unsigned bitmask, ListValue* list) { |
79 struct { | 79 struct { |
80 unsigned bit; | 80 unsigned bit; |
81 const char* const name; | 81 const char* const name; |
82 } kBitsToOs[] = { | 82 } kBitsToOs[] = { |
83 {kOsMac, "Mac"}, | 83 {kOsMac, "Mac"}, |
84 {kOsWin, "Windows"}, | 84 {kOsWin, "Windows"}, |
85 {kOsLinux, "Linux"}, | 85 {kOsLinux, "Linux"}, |
86 {kOsCrOS, "Chrome OS"}, | 86 {kOsCrOS, "Chrome OS"}, |
87 {kOsAndroid, "Android"}, | 87 {kOsAndroid, "Android"}, |
| 88 {kOsCrOSOwnerOnly, "Chrome OS (owner only)"}, |
88 }; | 89 }; |
89 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kBitsToOs); ++i) | 90 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kBitsToOs); ++i) |
90 if (bitmask & kBitsToOs[i].bit) | 91 if (bitmask & kBitsToOs[i].bit) |
91 list->Append(new StringValue(kBitsToOs[i].name)); | 92 list->Append(new StringValue(kBitsToOs[i].name)); |
92 } | 93 } |
93 | 94 |
94 const Experiment::Choice kOmniboxHistoryQuickProviderNewScoringChoices[] = { | 95 const Experiment::Choice kOmniboxHistoryQuickProviderNewScoringChoices[] = { |
95 { IDS_FLAGS_OMNIBOX_HISTORY_QUICK_PROVIDER_NEW_SCORING_AUTOMATIC, "", "" }, | 96 { IDS_FLAGS_OMNIBOX_HISTORY_QUICK_PROVIDER_NEW_SCORING_AUTOMATIC, "", "" }, |
96 { IDS_FLAGS_OMNIBOX_HISTORY_QUICK_PROVIDER_NEW_SCORING_ENABLED, | 97 { IDS_FLAGS_OMNIBOX_HISTORY_QUICK_PROVIDER_NEW_SCORING_ENABLED, |
97 switches::kOmniboxHistoryQuickProviderNewScoring, | 98 switches::kOmniboxHistoryQuickProviderNewScoring, |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 IDS_FLAGS_FORCE_COMPOSITING_MODE_NAME, | 301 IDS_FLAGS_FORCE_COMPOSITING_MODE_NAME, |
301 IDS_FLAGS_FORCE_COMPOSITING_MODE_DESCRIPTION, | 302 IDS_FLAGS_FORCE_COMPOSITING_MODE_DESCRIPTION, |
302 kOsMac | kOsWin | kOsLinux, | 303 kOsMac | kOsWin | kOsLinux, |
303 ENABLE_DISABLE_VALUE_TYPE(switches::kForceCompositingMode, | 304 ENABLE_DISABLE_VALUE_TYPE(switches::kForceCompositingMode, |
304 switches::kDisableForceCompositingMode) | 305 switches::kDisableForceCompositingMode) |
305 }, | 306 }, |
306 { | 307 { |
307 "threaded-compositing-mode", | 308 "threaded-compositing-mode", |
308 IDS_FLAGS_THREADED_COMPOSITING_MODE_NAME, | 309 IDS_FLAGS_THREADED_COMPOSITING_MODE_NAME, |
309 IDS_FLAGS_THREADED_COMPOSITING_MODE_DESCRIPTION, | 310 IDS_FLAGS_THREADED_COMPOSITING_MODE_DESCRIPTION, |
310 kOsDesktop & ~kOsCrOS, | 311 kOsMac | kOsWin | kOsLinux, |
311 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableThreadedCompositing, | 312 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableThreadedCompositing, |
312 switches::kDisableThreadedCompositing) | 313 switches::kDisableThreadedCompositing) |
313 }, | 314 }, |
314 { | 315 { |
315 "force-accelerated-composited-scrolling", | 316 "force-accelerated-composited-scrolling", |
316 IDS_FLAGS_FORCE_ACCELERATED_OVERFLOW_SCROLL_MODE_NAME, | 317 IDS_FLAGS_FORCE_ACCELERATED_OVERFLOW_SCROLL_MODE_NAME, |
317 IDS_FLAGS_FORCE_ACCELERATED_OVERFLOW_SCROLL_MODE_DESCRIPTION, | 318 IDS_FLAGS_FORCE_ACCELERATED_OVERFLOW_SCROLL_MODE_DESCRIPTION, |
318 kOsAll, | 319 kOsAll, |
319 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableAcceleratedOverflowScroll, | 320 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableAcceleratedOverflowScroll, |
320 switches::kDisableAcceleratedOverflowScroll) | 321 switches::kDisableAcceleratedOverflowScroll) |
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
675 "enable-vp9-playback", | 676 "enable-vp9-playback", |
676 IDS_FLAGS_ENABLE_VP9_PLAYBACK_NAME, | 677 IDS_FLAGS_ENABLE_VP9_PLAYBACK_NAME, |
677 IDS_FLAGS_ENABLE_VP9_PLAYBACK_DESCRIPTION, | 678 IDS_FLAGS_ENABLE_VP9_PLAYBACK_DESCRIPTION, |
678 kOsDesktop, | 679 kOsDesktop, |
679 SINGLE_VALUE_TYPE(switches::kEnableVp9Playback) | 680 SINGLE_VALUE_TYPE(switches::kEnableVp9Playback) |
680 }, | 681 }, |
681 { | 682 { |
682 "enable-managed-users", | 683 "enable-managed-users", |
683 IDS_FLAGS_ENABLE_LOCALLY_MANAGED_USERS_NAME, | 684 IDS_FLAGS_ENABLE_LOCALLY_MANAGED_USERS_NAME, |
684 IDS_FLAGS_ENABLE_LOCALLY_MANAGED_USERS_DESCRIPTION, | 685 IDS_FLAGS_ENABLE_LOCALLY_MANAGED_USERS_DESCRIPTION, |
685 kOsAll, | 686 kOsMac | kOsWin | kOsLinux | kOsAndroid | kOsCrOSOwnerOnly, |
686 SINGLE_VALUE_TYPE(switches::kEnableManagedUsers) | 687 SINGLE_VALUE_TYPE(switches::kEnableManagedUsers) |
687 }, | 688 }, |
688 #if defined(USE_ASH) | 689 #if defined(USE_ASH) |
689 { | 690 { |
690 "ash-disable-auto-window-placement", | 691 "ash-disable-auto-window-placement", |
691 IDS_FLAGS_ASH_AUTO_WINDOW_PLACEMENT_NAME, | 692 IDS_FLAGS_ASH_AUTO_WINDOW_PLACEMENT_NAME, |
692 IDS_FLAGS_ASH_AUTO_WINDOW_PLACEMENT_DESCRIPTION, | 693 IDS_FLAGS_ASH_AUTO_WINDOW_PLACEMENT_DESCRIPTION, |
693 kOsWin | kOsLinux | kOsCrOS, | 694 kOsWin | kOsLinux | kOsCrOS, |
694 SINGLE_VALUE_TYPE(ash::switches::kAshDisableAutoWindowPlacement) | 695 SINGLE_VALUE_TYPE(ash::switches::kAshDisableAutoWindowPlacement) |
695 }, | 696 }, |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 IDS_FLAGS_ENABLE_APP_LIST_SHOW_APPS_ONLY_DESCRIPTION, | 951 IDS_FLAGS_ENABLE_APP_LIST_SHOW_APPS_ONLY_DESCRIPTION, |
951 kOsAll, | 952 kOsAll, |
952 SINGLE_VALUE_TYPE(app_list::switches::kAppListShowAppsOnly), | 953 SINGLE_VALUE_TYPE(app_list::switches::kAppListShowAppsOnly), |
953 }, | 954 }, |
954 #endif // defined(USE_ASH) | 955 #endif // defined(USE_ASH) |
955 #if defined(OS_CHROMEOS) | 956 #if defined(OS_CHROMEOS) |
956 { | 957 { |
957 "disable-boot-animation", | 958 "disable-boot-animation", |
958 IDS_FLAGS_DISABLE_BOOT_ANIMATION, | 959 IDS_FLAGS_DISABLE_BOOT_ANIMATION, |
959 IDS_FLAGS_DISABLE_BOOT_ANIMATION_DESCRIPTION, | 960 IDS_FLAGS_DISABLE_BOOT_ANIMATION_DESCRIPTION, |
960 kOsCrOS, | 961 kOsCrOSOwnerOnly, |
961 SINGLE_VALUE_TYPE(switches::kDisableBootAnimation), | 962 SINGLE_VALUE_TYPE(switches::kDisableBootAnimation), |
962 }, | 963 }, |
963 { | 964 { |
964 "disable-boot-animation2", | 965 "disable-boot-animation2", |
965 IDS_FLAGS_DISABLE_BOOT_ANIMATION2, | 966 IDS_FLAGS_DISABLE_BOOT_ANIMATION2, |
966 IDS_FLAGS_DISABLE_BOOT_ANIMATION2_DESCRIPTION, | 967 IDS_FLAGS_DISABLE_BOOT_ANIMATION2_DESCRIPTION, |
967 kOsCrOS, | 968 kOsCrOSOwnerOnly, |
968 SINGLE_VALUE_TYPE(ash::switches::kAshDisableBootAnimation2), | 969 SINGLE_VALUE_TYPE(ash::switches::kAshDisableBootAnimation2), |
969 }, | 970 }, |
970 { | 971 { |
971 "boot-animation-fucntion", | 972 "boot-animation-fucntion", |
972 IDS_FLAGS_ASH_BOOT_ANIMATION_FUNCTION, | 973 IDS_FLAGS_ASH_BOOT_ANIMATION_FUNCTION, |
973 IDS_FLAGS_ASH_BOOT_ANIMATION_FUNCTION_DESCRIPTION, | 974 IDS_FLAGS_ASH_BOOT_ANIMATION_FUNCTION_DESCRIPTION, |
974 kOsCrOS, | 975 kOsCrOSOwnerOnly, |
975 MULTI_VALUE_TYPE(kAshBootAnimationFunction), | 976 MULTI_VALUE_TYPE(kAshBootAnimationFunction), |
976 }, | 977 }, |
977 { | 978 { |
978 "captive-portal-detector", | 979 "captive-portal-detector", |
979 IDS_FLAGS_CAPTIVE_PORTAL_DETECTOR_NAME, | 980 IDS_FLAGS_CAPTIVE_PORTAL_DETECTOR_NAME, |
980 IDS_FLAGS_CAPTIVE_PORTAL_DETECTOR_DESCRIPTION, | 981 IDS_FLAGS_CAPTIVE_PORTAL_DETECTOR_DESCRIPTION, |
981 kOsCrOS, | 982 kOsCrOSOwnerOnly, |
982 MULTI_VALUE_TYPE(kChromeCaptivePortalDetectionChoices), | 983 MULTI_VALUE_TYPE(kChromeCaptivePortalDetectionChoices), |
983 }, | 984 }, |
984 { | 985 { |
985 "disable-new-lock-animations", | 986 "disable-new-lock-animations", |
986 IDS_FLAGS_ASH_NEW_LOCK_ANIMATIONS, | 987 IDS_FLAGS_ASH_NEW_LOCK_ANIMATIONS, |
987 IDS_FLAGS_ASH_NEW_LOCK_ANIMATIONS_DESCRIPTION, | 988 IDS_FLAGS_ASH_NEW_LOCK_ANIMATIONS_DESCRIPTION, |
988 kOsCrOS, | 989 kOsCrOS, |
989 SINGLE_VALUE_TYPE(ash::switches::kAshDisableNewLockAnimations), | 990 SINGLE_VALUE_TYPE(ash::switches::kAshDisableNewLockAnimations), |
990 }, | 991 }, |
991 { | 992 { |
992 "file-manager-packaged", | 993 "file-manager-packaged", |
993 IDS_FLAGS_FILE_MANAGER_PACKAGED_NAME, | 994 IDS_FLAGS_FILE_MANAGER_PACKAGED_NAME, |
994 IDS_FLAGS_FILE_MANAGER_PACKAGED_DESCRIPTION, | 995 IDS_FLAGS_FILE_MANAGER_PACKAGED_DESCRIPTION, |
995 kOsCrOS, | 996 kOsCrOS, |
996 SINGLE_VALUE_TYPE(switches::kFileManagerPackaged), | 997 SINGLE_VALUE_TYPE(switches::kFileManagerPackaged), |
997 }, | 998 }, |
998 { | 999 { |
999 "disable-launcher-per-display", | 1000 "disable-launcher-per-display", |
1000 IDS_FLAGS_DISABLE_LAUNCHER_PER_DISPLAY_NAME, | 1001 IDS_FLAGS_DISABLE_LAUNCHER_PER_DISPLAY_NAME, |
1001 IDS_FLAGS_DISABLE_LAUNCHER_PER_DISPLAY_DESCRIPTION, | 1002 IDS_FLAGS_DISABLE_LAUNCHER_PER_DISPLAY_DESCRIPTION, |
1002 kOsCrOS, | 1003 kOsCrOS, |
1003 SINGLE_VALUE_TYPE(ash::switches::kAshDisableLauncherPerDisplay), | 1004 SINGLE_VALUE_TYPE(ash::switches::kAshDisableLauncherPerDisplay), |
1004 }, | 1005 }, |
1005 { | 1006 { |
1006 "disable-app-mode", | 1007 "disable-app-mode", |
1007 IDS_FLAGS_DISABLE_KIOSK_APPS_NAME, | 1008 IDS_FLAGS_DISABLE_KIOSK_APPS_NAME, |
1008 IDS_FLAGS_DISABLE_KIOSK_APPS_DESCRIPTION, | 1009 IDS_FLAGS_DISABLE_KIOSK_APPS_DESCRIPTION, |
1009 kOsCrOS, | 1010 kOsCrOSOwnerOnly, |
1010 SINGLE_VALUE_TYPE(switches::kDisableAppMode), | 1011 SINGLE_VALUE_TYPE(switches::kDisableAppMode), |
1011 }, | 1012 }, |
1012 { | 1013 { |
1013 "disable-force-fullscreen-app", | 1014 "disable-force-fullscreen-app", |
1014 IDS_FLAGS_DISABLE_FULLSCREEN_APP_NAME, | 1015 IDS_FLAGS_DISABLE_FULLSCREEN_APP_NAME, |
1015 IDS_FLAGS_DISABLE_FULLSCREEN_APP_DESCRIPTION, | 1016 IDS_FLAGS_DISABLE_FULLSCREEN_APP_DESCRIPTION, |
1016 kOsCrOS, | 1017 kOsCrOS, |
1017 SINGLE_VALUE_TYPE(switches::kDisableFullscreenApp), | 1018 SINGLE_VALUE_TYPE(switches::kDisableFullscreenApp), |
1018 }, | 1019 }, |
1019 #endif // defined(OS_CHROMEOS) | 1020 #endif // defined(OS_CHROMEOS) |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1399 // Variant of GetSanitizedEnabledFlags that also removes any flags that aren't | 1400 // Variant of GetSanitizedEnabledFlags that also removes any flags that aren't |
1400 // enabled on the current platform. | 1401 // enabled on the current platform. |
1401 void GetSanitizedEnabledFlagsForCurrentPlatform( | 1402 void GetSanitizedEnabledFlagsForCurrentPlatform( |
1402 PrefService* prefs, std::set<std::string>* result) { | 1403 PrefService* prefs, std::set<std::string>* result) { |
1403 GetSanitizedEnabledFlags(prefs, result); | 1404 GetSanitizedEnabledFlags(prefs, result); |
1404 | 1405 |
1405 // Filter out any experiments that aren't enabled on the current platform. We | 1406 // Filter out any experiments that aren't enabled on the current platform. We |
1406 // don't remove these from prefs else syncing to a platform with a different | 1407 // don't remove these from prefs else syncing to a platform with a different |
1407 // set of experiments would be lossy. | 1408 // set of experiments would be lossy. |
1408 std::set<std::string> platform_experiments; | 1409 std::set<std::string> platform_experiments; |
1409 int current_platform = GetCurrentPlatform(); | 1410 int current_platform = GetCurrentPlatform(true); |
1410 for (size_t i = 0; i < num_experiments; ++i) { | 1411 for (size_t i = 0; i < num_experiments; ++i) { |
1411 if (experiments[i].supported_platforms & current_platform) | 1412 if (experiments[i].supported_platforms & current_platform) |
1412 AddInternalName(experiments[i], &platform_experiments); | 1413 AddInternalName(experiments[i], &platform_experiments); |
1413 } | 1414 } |
1414 | 1415 |
1415 std::set<std::string> new_enabled_experiments; | 1416 std::set<std::string> new_enabled_experiments; |
1416 std::set_intersection( | 1417 std::set_intersection( |
1417 platform_experiments.begin(), platform_experiments.end(), | 1418 platform_experiments.begin(), platform_experiments.end(), |
1418 result->begin(), result->end(), | 1419 result->begin(), result->end(), |
1419 std::inserter(new_enabled_experiments, new_enabled_experiments.begin())); | 1420 std::inserter(new_enabled_experiments, new_enabled_experiments.begin())); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1463 } else { | 1464 } else { |
1464 description_id = choices[index].description_id; | 1465 description_id = choices[index].description_id; |
1465 } | 1466 } |
1466 return l10n_util::GetStringUTF16(description_id); | 1467 return l10n_util::GetStringUTF16(description_id); |
1467 } | 1468 } |
1468 | 1469 |
1469 void ConvertFlagsToSwitches(PrefService* prefs, CommandLine* command_line) { | 1470 void ConvertFlagsToSwitches(PrefService* prefs, CommandLine* command_line) { |
1470 FlagsState::GetInstance()->ConvertFlagsToSwitches(prefs, command_line); | 1471 FlagsState::GetInstance()->ConvertFlagsToSwitches(prefs, command_line); |
1471 } | 1472 } |
1472 | 1473 |
1473 ListValue* GetFlagsExperimentsData(PrefService* prefs) { | 1474 ListValue* GetFlagsExperimentsData(PrefService* prefs, bool owner) { |
1474 std::set<std::string> enabled_experiments; | 1475 std::set<std::string> enabled_experiments; |
1475 GetSanitizedEnabledFlags(prefs, &enabled_experiments); | 1476 GetSanitizedEnabledFlags(prefs, &enabled_experiments); |
1476 | 1477 |
1477 int current_platform = GetCurrentPlatform(); | 1478 int current_platform = GetCurrentPlatform(owner); |
1478 | 1479 |
1479 ListValue* experiments_data = new ListValue(); | 1480 ListValue* experiments_data = new ListValue(); |
1480 for (size_t i = 0; i < num_experiments; ++i) { | 1481 for (size_t i = 0; i < num_experiments; ++i) { |
1481 const Experiment& experiment = experiments[i]; | 1482 const Experiment& experiment = experiments[i]; |
1482 | 1483 |
1483 #if defined(OS_ANDROID) | 1484 #if defined(OS_ANDROID) |
1484 // Special case enable-spdy-proxy-auth, because it should only | 1485 // Special case enable-spdy-proxy-auth, because it should only |
1485 // be available on Dev and Beta channels. | 1486 // be available on Dev and Beta channels. |
1486 if (!strcmp("enable-spdy-proxy-auth", experiment.internal_name) && | 1487 if (!strcmp("enable-spdy-proxy-auth", experiment.internal_name) && |
1487 chrome::VersionInfo::GetChannel() == | 1488 chrome::VersionInfo::GetChannel() == |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1533 | 1534 |
1534 void RemoveFlagsSwitches( | 1535 void RemoveFlagsSwitches( |
1535 std::map<std::string, CommandLine::StringType>* switch_list) { | 1536 std::map<std::string, CommandLine::StringType>* switch_list) { |
1536 FlagsState::GetInstance()->RemoveFlagsSwitches(switch_list); | 1537 FlagsState::GetInstance()->RemoveFlagsSwitches(switch_list); |
1537 } | 1538 } |
1538 | 1539 |
1539 void ResetAllFlags(PrefService* prefs) { | 1540 void ResetAllFlags(PrefService* prefs) { |
1540 FlagsState::GetInstance()->ResetAllFlags(prefs); | 1541 FlagsState::GetInstance()->ResetAllFlags(prefs); |
1541 } | 1542 } |
1542 | 1543 |
1543 int GetCurrentPlatform() { | 1544 int GetCurrentPlatform(bool owner) { |
1544 #if defined(OS_MACOSX) | 1545 #if defined(OS_MACOSX) |
1545 return kOsMac; | 1546 return kOsMac; |
1546 #elif defined(OS_WIN) | 1547 #elif defined(OS_WIN) |
1547 return kOsWin; | 1548 return kOsWin; |
1548 #elif defined(OS_CHROMEOS) // Needs to be before the OS_LINUX check. | 1549 #elif defined(OS_CHROMEOS) // Needs to be before the OS_LINUX check. |
1549 return kOsCrOS; | 1550 return kOsCrOS | (owner ? kOsCrOSOwnerOnly : 0); |
1550 #elif defined(OS_LINUX) || defined(OS_OPENBSD) | 1551 #elif defined(OS_LINUX) || defined(OS_OPENBSD) |
1551 return kOsLinux; | 1552 return kOsLinux; |
1552 #elif defined(OS_ANDROID) | 1553 #elif defined(OS_ANDROID) |
1553 return kOsAndroid; | 1554 return kOsAndroid; |
1554 #else | 1555 #else |
1555 #error Unknown platform | 1556 #error Unknown platform |
1556 #endif | 1557 #endif |
1557 } | 1558 } |
1558 | 1559 |
1559 void RecordUMAStatistics(const PrefService* prefs) { | 1560 void RecordUMAStatistics(const PrefService* prefs) { |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1756 } | 1757 } |
1757 | 1758 |
1758 const Experiment* GetExperiments(size_t* count) { | 1759 const Experiment* GetExperiments(size_t* count) { |
1759 *count = num_experiments; | 1760 *count = num_experiments; |
1760 return experiments; | 1761 return experiments; |
1761 } | 1762 } |
1762 | 1763 |
1763 } // namespace testing | 1764 } // namespace testing |
1764 | 1765 |
1765 } // namespace about_flags | 1766 } // namespace about_flags |
OLD | NEW |