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

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

Issue 2257533005: Change logging of about:flags from actions to a histogram. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/about_flags.h" 5 #include "chrome/browser/about_flags.h"
6 6
7 #include <iterator> 7 #include <iterator>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 }; 638 };
639 639
640 const FeatureEntry::Choice kSSLVersionMaxChoices[] = { 640 const FeatureEntry::Choice kSSLVersionMaxChoices[] = {
641 {IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" }, 641 {IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", "" },
642 {IDS_FLAGS_SSL_VERSION_MAX_TLS12, switches::kSSLVersionMax, "tls1.2"}, 642 {IDS_FLAGS_SSL_VERSION_MAX_TLS12, switches::kSSLVersionMax, "tls1.2"},
643 {IDS_FLAGS_SSL_VERSION_MAX_TLS13, switches::kSSLVersionMax, "tls1.3"}, 643 {IDS_FLAGS_SSL_VERSION_MAX_TLS13, switches::kSSLVersionMax, "tls1.3"},
644 }; 644 };
645 645
646 // RECORDING USER METRICS FOR FLAGS: 646 // RECORDING USER METRICS FOR FLAGS:
647 // ----------------------------------------------------------------------------- 647 // -----------------------------------------------------------------------------
648 // The first line of the entry is the internal name. If you'd like to gather 648 // The first line of the entry is the internal name.
649 // statistics about the usage of your flag, you should append a marker comment
650 // to the end of the feature name, like so:
651 // "my-special-feature", // FLAGS:RECORD_UMA
652 // 649 //
653 // After doing that, run 650 // Usage of about:flags is logged on startup via the "AboutFlags.Seen" UMA
654 // tools/metrics/actions/extract_actions.py 651 // histogram. This histogram shows the number of startups with a given flag
655 // to add the metric to actions.xml (which will enable UMA to record your 652 // enabled. If you'd like to see user counts instead, make sure to switch to
656 // feature flag), then update the <owner>s and <description> sections. Make sure 653 // to "count users" view on the dashboard.
Ilya Sherman 2016/08/29 21:19:59 nit: You repeat this below as well -- is that inte
Alexei Svitkine (slow) 2016/08/29 21:50:58 Nope, removed!
657 // to include the actions.xml file when you upload your code for review!
658 //
659 // After your feature has shipped under a flag, you can locate the metrics under
660 // the action name AboutFlags_internal-action-name. Actions are recorded once
661 // per startup, so you should divide this number by AboutFlags_StartupTick to
662 // get a sense of usage. Note that this will not be the same as number of users
663 // with a given feature enabled because users can quit and relaunch the
664 // application multiple times over a given time interval. The dashboard also
665 // shows you how many (metrics reporting) users have enabled the flag over the
666 // last seven days. However, note that this is not the same as the number of
667 // users who have the flag enabled, since enabling the flag happens once,
668 // whereas running with the flag enabled happens until the user flips the flag
669 // again.
670 654
671 // To add a new entry, add to the end of kFeatureEntries. There are two 655 // To add a new entry, add to the end of kFeatureEntries. There are two
672 // distinct types of entries: 656 // distinct types of entries:
673 // . SINGLE_VALUE: entry is either on or off. Use the SINGLE_VALUE_TYPE 657 // . SINGLE_VALUE: entry is either on or off. Use the SINGLE_VALUE_TYPE
674 // macro for this type supplying the command line to the macro. 658 // macro for this type supplying the command line to the macro.
675 // . MULTI_VALUE: a list of choices, the first of which should correspond to a 659 // . MULTI_VALUE: a list of choices, the first of which should correspond to a
676 // deactivated state for this lab (i.e. no command line option). To specify 660 // deactivated state for this lab (i.e. no command line option). To specify
677 // this type of entry use the macro MULTI_VALUE_TYPE supplying it the 661 // this type of entry use the macro MULTI_VALUE_TYPE supplying it the
678 // array of choices. 662 // array of choices.
679 // See the documentation of FeatureEntry for details on the fields. 663 // See the documentation of FeatureEntry for details on the fields.
680 // 664 //
681 // Command-line switches must have entries in enum "LoginCustomFlags" in 665 // Usage of about:flags is logged on startup via the "AboutFlags.Seen" UMA
682 // histograms.xml. See note in histograms.xml and don't forget to run 666 // histogram. This histogram shows the number of startups with a given flag
683 // AboutFlagsHistogramTest unit test to calculate and verify checksum. 667 // enabled. If you'd like to see user counts instead, make sure to switch to
668 // to "count users" view on the dashboard. When adding new entries, the enum
669 // "LoginCustomFlags" must be updated in histograms.xml. See note in
670 // histograms.xml and don't forget to run AboutFlagsHistogramTest unit test
671 // to calculate and verify checksum.
Ilya Sherman 2016/08/29 21:19:58 Hmm, the user actions measured how often users *sw
Alexei Svitkine (slow) 2016/08/29 21:50:58 I thought so too originally, but turns out they we
684 // 672 //
685 // When adding a new choice, add it to the end of the list. 673 // When adding a new choice, add it to the end of the list.
686 const FeatureEntry kFeatureEntries[] = { 674 const FeatureEntry kFeatureEntries[] = {
687 {"ignore-gpu-blacklist", IDS_FLAGS_IGNORE_GPU_BLACKLIST_NAME, 675 {"ignore-gpu-blacklist", IDS_FLAGS_IGNORE_GPU_BLACKLIST_NAME,
688 IDS_FLAGS_IGNORE_GPU_BLACKLIST_DESCRIPTION, kOsAll, 676 IDS_FLAGS_IGNORE_GPU_BLACKLIST_DESCRIPTION, kOsAll,
689 SINGLE_VALUE_TYPE(switches::kIgnoreGpuBlacklist)}, 677 SINGLE_VALUE_TYPE(switches::kIgnoreGpuBlacklist)},
690 {"enable-experimental-canvas-features", 678 {"enable-experimental-canvas-features",
691 IDS_FLAGS_EXPERIMENTAL_CANVAS_FEATURES_NAME, 679 IDS_FLAGS_EXPERIMENTAL_CANVAS_FEATURES_NAME,
692 IDS_FLAGS_EXPERIMENTAL_CANVAS_FEATURES_DESCRIPTION, kOsAll, 680 IDS_FLAGS_EXPERIMENTAL_CANVAS_FEATURES_DESCRIPTION, kOsAll,
693 SINGLE_VALUE_TYPE(switches::kEnableExperimentalCanvasFeatures)}, 681 SINGLE_VALUE_TYPE(switches::kEnableExperimentalCanvasFeatures)},
(...skipping 27 matching lines...) Expand all
721 IDS_FLAGS_WEBRTC_STUN_ORIGIN_DESCRIPTION, kOsAll, 709 IDS_FLAGS_WEBRTC_STUN_ORIGIN_DESCRIPTION, kOsAll,
722 SINGLE_VALUE_TYPE(switches::kEnableWebRtcStunOrigin)}, 710 SINGLE_VALUE_TYPE(switches::kEnableWebRtcStunOrigin)},
723 #endif 711 #endif
724 #if defined(OS_ANDROID) 712 #if defined(OS_ANDROID)
725 {"enable-osk-overscroll", IDS_FLAGS_ENABLE_OSK_OVERSCROLL_NAME, 713 {"enable-osk-overscroll", IDS_FLAGS_ENABLE_OSK_OVERSCROLL_NAME,
726 IDS_FLAGS_ENABLE_OSK_OVERSCROLL_DESCRIPTION, kOsAndroid, 714 IDS_FLAGS_ENABLE_OSK_OVERSCROLL_DESCRIPTION, kOsAndroid,
727 SINGLE_VALUE_TYPE(switches::kEnableOSKOverscroll)}, 715 SINGLE_VALUE_TYPE(switches::kEnableOSKOverscroll)},
728 #endif 716 #endif
729 // Native client is compiled out when DISABLE_NACL is defined. 717 // Native client is compiled out when DISABLE_NACL is defined.
730 #if !defined(DISABLE_NACL) 718 #if !defined(DISABLE_NACL)
731 {"enable-nacl", // FLAGS:RECORD_UMA 719 {"enable-nacl", IDS_FLAGS_NACL_NAME, IDS_FLAGS_NACL_DESCRIPTION, kOsAll,
732 IDS_FLAGS_NACL_NAME, IDS_FLAGS_NACL_DESCRIPTION, kOsAll,
733 SINGLE_VALUE_TYPE(switches::kEnableNaCl)}, 720 SINGLE_VALUE_TYPE(switches::kEnableNaCl)},
734 {"enable-nacl-debug", // FLAGS:RECORD_UMA 721 {"enable-nacl-debug", IDS_FLAGS_NACL_DEBUG_NAME,
735 IDS_FLAGS_NACL_DEBUG_NAME, IDS_FLAGS_NACL_DEBUG_DESCRIPTION, kOsDesktop, 722 IDS_FLAGS_NACL_DEBUG_DESCRIPTION, kOsDesktop,
736 SINGLE_VALUE_TYPE(switches::kEnableNaClDebug)}, 723 SINGLE_VALUE_TYPE(switches::kEnableNaClDebug)},
737 {"force-pnacl-subzero", IDS_FLAGS_PNACL_SUBZERO_NAME, 724 {"force-pnacl-subzero", IDS_FLAGS_PNACL_SUBZERO_NAME,
738 IDS_FLAGS_PNACL_SUBZERO_DESCRIPTION, kOsDesktop, 725 IDS_FLAGS_PNACL_SUBZERO_DESCRIPTION, kOsDesktop,
739 SINGLE_VALUE_TYPE(switches::kForcePNaClSubzero)}, 726 SINGLE_VALUE_TYPE(switches::kForcePNaClSubzero)},
740 {"nacl-debug-mask", // FLAGS:RECORD_UMA 727 {"nacl-debug-mask", IDS_FLAGS_NACL_DEBUG_MASK_NAME,
741 IDS_FLAGS_NACL_DEBUG_MASK_NAME, IDS_FLAGS_NACL_DEBUG_MASK_DESCRIPTION, 728 IDS_FLAGS_NACL_DEBUG_MASK_DESCRIPTION, kOsDesktop,
742 kOsDesktop, MULTI_VALUE_TYPE(kNaClDebugMaskChoices)}, 729 MULTI_VALUE_TYPE(kNaClDebugMaskChoices)},
743 #endif 730 #endif
744 #if defined(ENABLE_EXTENSIONS) 731 #if defined(ENABLE_EXTENSIONS)
745 {"extension-apis", // FLAGS:RECORD_UMA 732 {"extension-apis", IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_NAME,
746 IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_NAME,
747 IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_DESCRIPTION, kOsDesktop, 733 IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_DESCRIPTION, kOsDesktop,
748 SINGLE_VALUE_TYPE(extensions::switches::kEnableExperimentalExtensionApis)}, 734 SINGLE_VALUE_TYPE(extensions::switches::kEnableExperimentalExtensionApis)},
749 {"extensions-on-chrome-urls", IDS_FLAGS_EXTENSIONS_ON_CHROME_URLS_NAME, 735 {"extensions-on-chrome-urls", IDS_FLAGS_EXTENSIONS_ON_CHROME_URLS_NAME,
750 IDS_FLAGS_EXTENSIONS_ON_CHROME_URLS_DESCRIPTION, kOsAll, 736 IDS_FLAGS_EXTENSIONS_ON_CHROME_URLS_DESCRIPTION, kOsAll,
751 SINGLE_VALUE_TYPE(extensions::switches::kExtensionsOnChromeURLs)}, 737 SINGLE_VALUE_TYPE(extensions::switches::kExtensionsOnChromeURLs)},
752 #endif 738 #endif
753 {"enable-fast-unload", IDS_FLAGS_FAST_UNLOAD_NAME, 739 {"enable-fast-unload", IDS_FLAGS_FAST_UNLOAD_NAME,
754 IDS_FLAGS_FAST_UNLOAD_DESCRIPTION, kOsAll, 740 IDS_FLAGS_FAST_UNLOAD_DESCRIPTION, kOsAll,
755 SINGLE_VALUE_TYPE(switches::kEnableFastUnload)}, 741 SINGLE_VALUE_TYPE(switches::kEnableFastUnload)},
756 #if defined(ENABLE_EXTENSIONS) 742 #if defined(ENABLE_EXTENSIONS)
(...skipping 11 matching lines...) Expand all
768 switches::kDisableContextualSearch)}, 754 switches::kDisableContextualSearch)},
769 #endif 755 #endif
770 {"show-autofill-type-predictions", 756 {"show-autofill-type-predictions",
771 IDS_FLAGS_SHOW_AUTOFILL_TYPE_PREDICTIONS_NAME, 757 IDS_FLAGS_SHOW_AUTOFILL_TYPE_PREDICTIONS_NAME,
772 IDS_FLAGS_SHOW_AUTOFILL_TYPE_PREDICTIONS_DESCRIPTION, kOsAll, 758 IDS_FLAGS_SHOW_AUTOFILL_TYPE_PREDICTIONS_DESCRIPTION, kOsAll,
773 SINGLE_VALUE_TYPE(autofill::switches::kShowAutofillTypePredictions)}, 759 SINGLE_VALUE_TYPE(autofill::switches::kShowAutofillTypePredictions)},
774 {"enable-credit-card-signin-promo", 760 {"enable-credit-card-signin-promo",
775 IDS_FLAGS_ENABLE_AUTOFILL_CREDIT_CARD_SIGNIN_PROMO_NAME, 761 IDS_FLAGS_ENABLE_AUTOFILL_CREDIT_CARD_SIGNIN_PROMO_NAME,
776 IDS_FLAGS_ENABLE_AUTOFILL_CREDIT_CARD_SIGNIN_PROMO_DESCRIPTION, kOsAll, 762 IDS_FLAGS_ENABLE_AUTOFILL_CREDIT_CARD_SIGNIN_PROMO_DESCRIPTION, kOsAll,
777 FEATURE_VALUE_TYPE(autofill::kAutofillCreditCardSigninPromo)}, 763 FEATURE_VALUE_TYPE(autofill::kAutofillCreditCardSigninPromo)},
778 {"smooth-scrolling", // FLAGS:RECORD_UMA 764 {"smooth-scrolling", IDS_FLAGS_SMOOTH_SCROLLING_NAME,
779 IDS_FLAGS_SMOOTH_SCROLLING_NAME, IDS_FLAGS_SMOOTH_SCROLLING_DESCRIPTION, 765 IDS_FLAGS_SMOOTH_SCROLLING_DESCRIPTION,
780 // Mac has a separate implementation with its own setting to disable. 766 // Mac has a separate implementation with its own setting to disable.
781 kOsLinux | kOsCrOS | kOsWin | kOsAndroid, 767 kOsLinux | kOsCrOS | kOsWin | kOsAndroid,
782 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSmoothScrolling, 768 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSmoothScrolling,
783 switches::kDisableSmoothScrolling)}, 769 switches::kDisableSmoothScrolling)},
784 #if defined(USE_AURA) || defined(OS_LINUX) 770 #if defined(USE_AURA) || defined(OS_LINUX)
785 {"overlay-scrollbars", IDS_FLAGS_OVERLAY_SCROLLBARS_NAME, 771 {"overlay-scrollbars", IDS_FLAGS_OVERLAY_SCROLLBARS_NAME,
786 IDS_FLAGS_OVERLAY_SCROLLBARS_DESCRIPTION, 772 IDS_FLAGS_OVERLAY_SCROLLBARS_DESCRIPTION,
787 // Uses the system preference on Mac (a different implementation). 773 // Uses the system preference on Mac (a different implementation).
788 // On Android, this is always enabled. 774 // On Android, this is always enabled.
789 kOsLinux | kOsCrOS | kOsWin, 775 kOsLinux | kOsCrOS | kOsWin,
790 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOverlayScrollbar, 776 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOverlayScrollbar,
791 switches::kDisableOverlayScrollbar)}, 777 switches::kDisableOverlayScrollbar)},
792 #endif 778 #endif
793 {// See http://crbug.com/120416 for how to remove this flag. 779 {// See http://crbug.com/120416 for how to remove this flag.
794 "save-page-as-mhtml", // FLAGS:RECORD_UMA 780 "save-page-as-mhtml", IDS_FLAGS_SAVE_PAGE_AS_MHTML_NAME,
795 IDS_FLAGS_SAVE_PAGE_AS_MHTML_NAME,
796 IDS_FLAGS_SAVE_PAGE_AS_MHTML_DESCRIPTION, kOsMac | kOsWin | kOsLinux, 781 IDS_FLAGS_SAVE_PAGE_AS_MHTML_DESCRIPTION, kOsMac | kOsWin | kOsLinux,
797 SINGLE_VALUE_TYPE(switches::kSavePageAsMHTML)}, 782 SINGLE_VALUE_TYPE(switches::kSavePageAsMHTML)},
798 {"mhtml-generator-option", IDS_FLAGS_MHTML_GENERATOR_OPTION_NAME, 783 {"mhtml-generator-option", IDS_FLAGS_MHTML_GENERATOR_OPTION_NAME,
799 IDS_FLAGS_MHTML_GENERATOR_OPTION_DESCRIPTION, kOsMac | kOsWin | kOsLinux, 784 IDS_FLAGS_MHTML_GENERATOR_OPTION_DESCRIPTION, kOsMac | kOsWin | kOsLinux,
800 MULTI_VALUE_TYPE(kMHTMLGeneratorOptionChoices)}, 785 MULTI_VALUE_TYPE(kMHTMLGeneratorOptionChoices)},
801 {"enable-quic", IDS_FLAGS_QUIC_NAME, IDS_FLAGS_QUIC_DESCRIPTION, kOsAll, 786 {"enable-quic", IDS_FLAGS_QUIC_NAME, IDS_FLAGS_QUIC_DESCRIPTION, kOsAll,
802 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableQuic, switches::kDisableQuic)}, 787 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableQuic, switches::kDisableQuic)},
803 {"disable-javascript-harmony-shipping", 788 {"disable-javascript-harmony-shipping",
804 IDS_FLAGS_JAVASCRIPT_HARMONY_SHIPPING_NAME, 789 IDS_FLAGS_JAVASCRIPT_HARMONY_SHIPPING_NAME,
805 IDS_FLAGS_JAVASCRIPT_HARMONY_SHIPPING_DESCRIPTION, kOsAll, 790 IDS_FLAGS_JAVASCRIPT_HARMONY_SHIPPING_DESCRIPTION, kOsAll,
(...skipping 18 matching lines...) Expand all
824 0, 809 0,
825 #endif 810 #endif
826 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableSoftwareRasterizer)}, 811 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableSoftwareRasterizer)},
827 {"enable-gpu-rasterization", IDS_FLAGS_GPU_RASTERIZATION_NAME, 812 {"enable-gpu-rasterization", IDS_FLAGS_GPU_RASTERIZATION_NAME,
828 IDS_FLAGS_GPU_RASTERIZATION_DESCRIPTION, kOsAll, 813 IDS_FLAGS_GPU_RASTERIZATION_DESCRIPTION, kOsAll,
829 MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)}, 814 MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)},
830 {"gpu-rasterization-msaa-sample-count", 815 {"gpu-rasterization-msaa-sample-count",
831 IDS_FLAGS_GPU_RASTERIZATION_MSAA_SAMPLE_COUNT_NAME, 816 IDS_FLAGS_GPU_RASTERIZATION_MSAA_SAMPLE_COUNT_NAME,
832 IDS_FLAGS_GPU_RASTERIZATION_MSAA_SAMPLE_COUNT_DESCRIPTION, kOsAll, 817 IDS_FLAGS_GPU_RASTERIZATION_MSAA_SAMPLE_COUNT_DESCRIPTION, kOsAll,
833 MULTI_VALUE_TYPE(kGpuRasterizationMSAASampleCountChoices)}, 818 MULTI_VALUE_TYPE(kGpuRasterizationMSAASampleCountChoices)},
834 {"enable-experimental-web-platform-features", // FLAGS:RECORD_UMA 819 {"enable-experimental-web-platform-features",
835 IDS_FLAGS_EXPERIMENTAL_WEB_PLATFORM_FEATURES_NAME, 820 IDS_FLAGS_EXPERIMENTAL_WEB_PLATFORM_FEATURES_NAME,
836 IDS_FLAGS_EXPERIMENTAL_WEB_PLATFORM_FEATURES_DESCRIPTION, kOsAll, 821 IDS_FLAGS_EXPERIMENTAL_WEB_PLATFORM_FEATURES_DESCRIPTION, kOsAll,
837 SINGLE_VALUE_TYPE(switches::kEnableExperimentalWebPlatformFeatures)}, 822 SINGLE_VALUE_TYPE(switches::kEnableExperimentalWebPlatformFeatures)},
838 {"enable-web-bluetooth", // FLAGS:RECORD_UMA 823 {"enable-web-bluetooth", IDS_FLAGS_WEB_BLUETOOTH_NAME,
839 IDS_FLAGS_WEB_BLUETOOTH_NAME, IDS_FLAGS_WEB_BLUETOOTH_DESCRIPTION, 824 IDS_FLAGS_WEB_BLUETOOTH_DESCRIPTION,
840 kOsCrOS | kOsMac | kOsAndroid | kOsLinux, 825 kOsCrOS | kOsMac | kOsAndroid | kOsLinux,
841 SINGLE_VALUE_TYPE(switches::kEnableWebBluetooth)}, 826 SINGLE_VALUE_TYPE(switches::kEnableWebBluetooth)},
842 #if defined(ENABLE_EXTENSIONS) 827 #if defined(ENABLE_EXTENSIONS)
843 {"enable-ble-advertising-in-apps", 828 {"enable-ble-advertising-in-apps",
844 IDS_FLAGS_BLE_ADVERTISING_IN_EXTENSIONS_NAME, 829 IDS_FLAGS_BLE_ADVERTISING_IN_EXTENSIONS_NAME,
845 IDS_FLAGS_BLE_ADVERTISING_IN_EXTENSIONS_DESCRIPTION, kOsCrOS, 830 IDS_FLAGS_BLE_ADVERTISING_IN_EXTENSIONS_DESCRIPTION, kOsCrOS,
846 SINGLE_VALUE_TYPE(extensions::switches::kEnableBLEAdvertising)}, 831 SINGLE_VALUE_TYPE(extensions::switches::kEnableBLEAdvertising)},
847 #endif 832 #endif
848 {"enable-devtools-experiments", IDS_FLAGS_DEVTOOLS_EXPERIMENTS_NAME, 833 {"enable-devtools-experiments", IDS_FLAGS_DEVTOOLS_EXPERIMENTS_NAME,
849 IDS_FLAGS_DEVTOOLS_EXPERIMENTS_DESCRIPTION, kOsDesktop, 834 IDS_FLAGS_DEVTOOLS_EXPERIMENTS_DESCRIPTION, kOsDesktop,
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
1339 #endif 1324 #endif
1340 {"translate-lang-by-ulp", IDS_FLAGS_TRANSLATE_LANGUAGE_BY_ULP_NAME, 1325 {"translate-lang-by-ulp", IDS_FLAGS_TRANSLATE_LANGUAGE_BY_ULP_NAME,
1341 IDS_FLAGS_TRANSLATE_LANGUAGE_BY_ULP_DESCRIPTION, kOsAll, 1326 IDS_FLAGS_TRANSLATE_LANGUAGE_BY_ULP_DESCRIPTION, kOsAll,
1342 FEATURE_VALUE_TYPE(translate::kTranslateLanguageByULP)}, 1327 FEATURE_VALUE_TYPE(translate::kTranslateLanguageByULP)},
1343 #if defined(OS_MACOSX) 1328 #if defined(OS_MACOSX)
1344 {"enable-native-notifications", IDS_NOTIFICATIONS_NATIVE_FLAG, 1329 {"enable-native-notifications", IDS_NOTIFICATIONS_NATIVE_FLAG,
1345 IDS_NOTIFICATIONS_NATIVE_FLAG_DESCRIPTION, kOsMac, 1330 IDS_NOTIFICATIONS_NATIVE_FLAG_DESCRIPTION, kOsMac,
1346 SINGLE_VALUE_TYPE(switches::kEnableNativeNotifications)}, 1331 SINGLE_VALUE_TYPE(switches::kEnableNativeNotifications)},
1347 #endif 1332 #endif
1348 #if defined(TOOLKIT_VIEWS) 1333 #if defined(TOOLKIT_VIEWS)
1349 {"disable-views-rect-based-targeting", // FLAGS:RECORD_UMA 1334 {"disable-views-rect-based-targeting",
1350 IDS_FLAGS_VIEWS_RECT_BASED_TARGETING_NAME, 1335 IDS_FLAGS_VIEWS_RECT_BASED_TARGETING_NAME,
1351 IDS_FLAGS_VIEWS_RECT_BASED_TARGETING_DESCRIPTION, 1336 IDS_FLAGS_VIEWS_RECT_BASED_TARGETING_DESCRIPTION,
1352 kOsCrOS | kOsWin | kOsLinux, 1337 kOsCrOS | kOsWin | kOsLinux,
1353 SINGLE_DISABLE_VALUE_TYPE( 1338 SINGLE_DISABLE_VALUE_TYPE(
1354 views::switches::kDisableViewsRectBasedTargeting)}, 1339 views::switches::kDisableViewsRectBasedTargeting)},
1355 #endif 1340 #endif
1356 #if defined(ENABLE_EXTENSIONS) 1341 #if defined(ENABLE_EXTENSIONS)
1357 {"enable-apps-show-on-first-paint", IDS_FLAGS_APPS_SHOW_ON_FIRST_PAINT_NAME, 1342 {"enable-apps-show-on-first-paint", IDS_FLAGS_APPS_SHOW_ON_FIRST_PAINT_NAME,
1358 IDS_FLAGS_APPS_SHOW_ON_FIRST_PAINT_DESCRIPTION, kOsDesktop, 1343 IDS_FLAGS_APPS_SHOW_ON_FIRST_PAINT_DESCRIPTION, kOsDesktop,
1359 SINGLE_VALUE_TYPE(extensions::switches::kEnableAppsShowOnFirstPaint)}, 1344 SINGLE_VALUE_TYPE(extensions::switches::kEnableAppsShowOnFirstPaint)},
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1518 #if defined(OS_ANDROID) 1503 #if defined(OS_ANDROID)
1519 {"enable-seccomp-sandbox-android", 1504 {"enable-seccomp-sandbox-android",
1520 IDS_FLAGS_SECCOMP_FILTER_SANDBOX_ANDROID_NAME, 1505 IDS_FLAGS_SECCOMP_FILTER_SANDBOX_ANDROID_NAME,
1521 IDS_FLAGS_SECCOMP_FILTER_SANDBOX_ANDROID_DESCRIPTION, kOsAndroid, 1506 IDS_FLAGS_SECCOMP_FILTER_SANDBOX_ANDROID_DESCRIPTION, kOsAndroid,
1522 FEATURE_VALUE_TYPE(features::kSeccompSandboxAndroid)}, 1507 FEATURE_VALUE_TYPE(features::kSeccompSandboxAndroid)},
1523 #endif 1508 #endif
1524 {"enable-touch-hover", IDS_FLAGS_TOUCH_HOVER_NAME, 1509 {"enable-touch-hover", IDS_FLAGS_TOUCH_HOVER_NAME,
1525 IDS_FLAGS_TOUCH_HOVER_DESCRIPTION, kOsAndroid, 1510 IDS_FLAGS_TOUCH_HOVER_DESCRIPTION, kOsAndroid,
1526 SINGLE_VALUE_TYPE("enable-touch-hover")}, 1511 SINGLE_VALUE_TYPE("enable-touch-hover")},
1527 #if defined(OS_CHROMEOS) 1512 #if defined(OS_CHROMEOS)
1528 {"enable-wifi-credential-sync", // FLAGS:RECORD_UMA 1513 {"enable-wifi-credential-sync", IDS_FLAGS_WIFI_CREDENTIAL_SYNC_NAME,
1529 IDS_FLAGS_WIFI_CREDENTIAL_SYNC_NAME,
1530 IDS_FLAGS_WIFI_CREDENTIAL_SYNC_DESCRIPTION, kOsCrOS, 1514 IDS_FLAGS_WIFI_CREDENTIAL_SYNC_DESCRIPTION, kOsCrOS,
1531 SINGLE_VALUE_TYPE(switches::kEnableWifiCredentialSync)}, 1515 SINGLE_VALUE_TYPE(switches::kEnableWifiCredentialSync)},
1532 {"enable-potentially-annoying-security-features", 1516 {"enable-potentially-annoying-security-features",
1533 IDS_FLAGS_EXPERIMENTAL_SECURITY_FEATURES_NAME, 1517 IDS_FLAGS_EXPERIMENTAL_SECURITY_FEATURES_NAME,
1534 IDS_FLAGS_EXPERIMENTAL_SECURITY_FEATURES_DESCRIPTION, kOsAll, 1518 IDS_FLAGS_EXPERIMENTAL_SECURITY_FEATURES_DESCRIPTION, kOsAll,
1535 SINGLE_VALUE_TYPE(switches::kEnablePotentiallyAnnoyingSecurityFeatures)}, 1519 SINGLE_VALUE_TYPE(switches::kEnablePotentiallyAnnoyingSecurityFeatures)},
1536 #endif 1520 #endif
1537 {"mark-non-secure-as", // FLAGS:RECORD_UMA 1521 {"mark-non-secure-as", IDS_MARK_NON_SECURE_AS_NAME,
1538 IDS_MARK_NON_SECURE_AS_NAME, IDS_MARK_NON_SECURE_AS_DESCRIPTION, kOsAll, 1522 IDS_MARK_NON_SECURE_AS_DESCRIPTION, kOsAll,
1539 MULTI_VALUE_TYPE(kMarkNonSecureAsChoices)}, 1523 MULTI_VALUE_TYPE(kMarkNonSecureAsChoices)},
1540 {"enable-site-per-process", IDS_FLAGS_SITE_PER_PROCESS_NAME, 1524 {"enable-site-per-process", IDS_FLAGS_SITE_PER_PROCESS_NAME,
1541 IDS_FLAGS_SITE_PER_PROCESS_DESCRIPTION, kOsAll, 1525 IDS_FLAGS_SITE_PER_PROCESS_DESCRIPTION, kOsAll,
1542 SINGLE_VALUE_TYPE(switches::kSitePerProcess)}, 1526 SINGLE_VALUE_TYPE(switches::kSitePerProcess)},
1543 {"enable-top-document-isolation", IDS_FLAGS_TOP_DOCUMENT_ISOLATION_NAME, 1527 {"enable-top-document-isolation", IDS_FLAGS_TOP_DOCUMENT_ISOLATION_NAME,
1544 IDS_FLAGS_TOP_DOCUMENT_ISOLATION_DESCRIPTION, kOsAll, 1528 IDS_FLAGS_TOP_DOCUMENT_ISOLATION_DESCRIPTION, kOsAll,
1545 SINGLE_VALUE_TYPE(switches::kTopDocumentIsolation)}, 1529 SINGLE_VALUE_TYPE(switches::kTopDocumentIsolation)},
1546 {"enable-use-zoom-for-dsf", IDS_FLAGS_ENABLE_USE_ZOOM_FOR_DSF_NAME, 1530 {"enable-use-zoom-for-dsf", IDS_FLAGS_ENABLE_USE_ZOOM_FOR_DSF_NAME,
1547 IDS_FLAGS_ENABLE_USE_ZOOM_FOR_DSF_DESCRIPTION, kOsAll, 1531 IDS_FLAGS_ENABLE_USE_ZOOM_FOR_DSF_DESCRIPTION, kOsAll,
1548 MULTI_VALUE_TYPE(kEnableUseZoomForDSFChoices)}, 1532 MULTI_VALUE_TYPE(kEnableUseZoomForDSFChoices)},
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
1971 SINGLE_VALUE_TYPE( 1955 SINGLE_VALUE_TYPE(
1972 chromeos::switches::kEnableExperimentalAccessibilityFeatures)}, 1956 chromeos::switches::kEnableExperimentalAccessibilityFeatures)},
1973 {"opt-in-ime-menu", IDS_FLAGS_ENABLE_IME_MENU_NAME, 1957 {"opt-in-ime-menu", IDS_FLAGS_ENABLE_IME_MENU_NAME,
1974 IDS_FLAGS_ENABLE_IME_MENU_DESCRIPTION, kOsCrOS, 1958 IDS_FLAGS_ENABLE_IME_MENU_DESCRIPTION, kOsCrOS,
1975 FEATURE_VALUE_TYPE(features::kOptInImeMenu)}, 1959 FEATURE_VALUE_TYPE(features::kOptInImeMenu)},
1976 {"disable-system-timezone-automatic-detection", 1960 {"disable-system-timezone-automatic-detection",
1977 IDS_FLAGS_DISABLE_SYSTEM_TIMEZONE_AUTOMATIC_DETECTION_NAME, 1961 IDS_FLAGS_DISABLE_SYSTEM_TIMEZONE_AUTOMATIC_DETECTION_NAME,
1978 IDS_FLAGS_DISABLE_SYSTEM_TIMEZONE_AUTOMATIC_DETECTION_DESCRIPTION, kOsCrOS, 1962 IDS_FLAGS_DISABLE_SYSTEM_TIMEZONE_AUTOMATIC_DETECTION_DESCRIPTION, kOsCrOS,
1979 SINGLE_VALUE_TYPE( 1963 SINGLE_VALUE_TYPE(
1980 chromeos::switches::kDisableSystemTimezoneAutomaticDetectionPolicy)}, 1964 chromeos::switches::kDisableSystemTimezoneAutomaticDetectionPolicy)},
1981 {"enable-native-cups", // FLAGS:RECORD_UMA 1965 {"enable-native-cups", IDS_FLAGS_ENABLE_NATIVE_CUPS_NAME,
1982 IDS_FLAGS_ENABLE_NATIVE_CUPS_NAME,
1983 IDS_FLAGS_ENABLE_NATIVE_CUPS_DESCRIPTION, kOsCrOS, 1966 IDS_FLAGS_ENABLE_NATIVE_CUPS_DESCRIPTION, kOsCrOS,
1984 SINGLE_VALUE_TYPE(switches::kEnableNativeCups)}, 1967 SINGLE_VALUE_TYPE(switches::kEnableNativeCups)},
1985 {"enable-files-details-panel", IDS_FLAGS_ENABLE_FILES_DETAILS_PANEL_NAME, 1968 {"enable-files-details-panel", IDS_FLAGS_ENABLE_FILES_DETAILS_PANEL_NAME,
1986 IDS_FLAGS_ENABLE_FILES_DETAILS_PANEL_DESCRIPTION, kOsCrOS, 1969 IDS_FLAGS_ENABLE_FILES_DETAILS_PANEL_DESCRIPTION, kOsCrOS,
1987 SINGLE_VALUE_TYPE(chromeos::switches::kEnableFilesDetailsPanel)}, 1970 SINGLE_VALUE_TYPE(chromeos::switches::kEnableFilesDetailsPanel)},
1988 #endif // defined(OS_CHROMEOS) 1971 #endif // defined(OS_CHROMEOS)
1989 #if !defined(OS_ANDROID) && !defined(OS_IOS) && defined(GOOGLE_CHROME_BUILD) 1972 #if !defined(OS_ANDROID) && !defined(OS_IOS) && defined(GOOGLE_CHROME_BUILD)
1990 {"enable-google-branded-context-menu", 1973 {"enable-google-branded-context-menu",
1991 IDS_FLAGS_GOOGLE_BRANDED_CONTEXT_MENU_NAME, 1974 IDS_FLAGS_GOOGLE_BRANDED_CONTEXT_MENU_NAME,
1992 IDS_FLAGS_GOOGLE_BRANDED_CONTEXT_MENU_DESCRIPTION, kOsDesktop, 1975 IDS_FLAGS_GOOGLE_BRANDED_CONTEXT_MENU_DESCRIPTION, kOsDesktop,
(...skipping 11 matching lines...) Expand all
2004 SINGLE_VALUE_TYPE(switches::kEnableFullscreenToolbarReveal)}, 1987 SINGLE_VALUE_TYPE(switches::kEnableFullscreenToolbarReveal)},
2005 #endif 1988 #endif
2006 #if defined(OS_ANDROID) 1989 #if defined(OS_ANDROID)
2007 {"important-sites-in-cbd", IDS_FLAGS_IMPORTANT_SITES_IN_CBD_NAME, 1990 {"important-sites-in-cbd", IDS_FLAGS_IMPORTANT_SITES_IN_CBD_NAME,
2008 IDS_FLAGS_IMPORTANT_SITES_IN_CBD_DESCRIPTION, kOsAndroid, 1991 IDS_FLAGS_IMPORTANT_SITES_IN_CBD_DESCRIPTION, kOsAndroid,
2009 FEATURE_VALUE_TYPE(chrome::android::kImportantSitesInCBD)}, 1992 FEATURE_VALUE_TYPE(chrome::android::kImportantSitesInCBD)},
2010 {"autoplay-muted-videos", IDS_FLAGS_ENABLE_AUTOPLAY_MUTED_VIDEOS_NAME, 1993 {"autoplay-muted-videos", IDS_FLAGS_ENABLE_AUTOPLAY_MUTED_VIDEOS_NAME,
2011 IDS_FLAGS_ENABLE_AUTOPLAY_MUTED_VIDEOS_DESCRIPTION, kOsAndroid, 1994 IDS_FLAGS_ENABLE_AUTOPLAY_MUTED_VIDEOS_DESCRIPTION, kOsAndroid,
2012 FEATURE_VALUE_TYPE(features::kAutoplayMutedVideos)}, 1995 FEATURE_VALUE_TYPE(features::kAutoplayMutedVideos)},
2013 #endif 1996 #endif
2014 {"enable-pointer-events", // FLAGS:RECORD_UMA 1997 {"enable-pointer-events", IDS_FLAGS_EXPERIMENTAL_POINTER_EVENT_NAME,
2015 IDS_FLAGS_EXPERIMENTAL_POINTER_EVENT_NAME,
2016 IDS_FLAGS_EXPERIMENTAL_POINTER_EVENT_DESCRIPTION, kOsAll, 1998 IDS_FLAGS_EXPERIMENTAL_POINTER_EVENT_DESCRIPTION, kOsAll,
2017 FEATURE_VALUE_TYPE(features::kPointerEvents)}, 1999 FEATURE_VALUE_TYPE(features::kPointerEvents)},
2018 {"passive-listener-default", // FLAGS:RECORD_UMA 2000 {"passive-listener-default", IDS_FLAGS_PASSIVE_EVENT_LISTENER_DEFAULT_NAME,
2019 IDS_FLAGS_PASSIVE_EVENT_LISTENER_DEFAULT_NAME,
2020 IDS_FLAGS_PASSIVE_EVENT_LISTENER_DEFAULT_DESCRIPTION, kOsAll, 2001 IDS_FLAGS_PASSIVE_EVENT_LISTENER_DEFAULT_DESCRIPTION, kOsAll,
2021 MULTI_VALUE_TYPE(kPassiveListenersChoices)}, 2002 MULTI_VALUE_TYPE(kPassiveListenersChoices)},
2022 {"document-passive-event-listeners", // FLAGS:RECORD_UMA 2003 {"document-passive-event-listeners",
2023 IDS_FLAGS_PASSIVE_DOCUMENT_EVENT_LISTENERS_NAME, 2004 IDS_FLAGS_PASSIVE_DOCUMENT_EVENT_LISTENERS_NAME,
2024 IDS_FLAGS_PASSIVE_DOCUMENT_EVENT_LISTENERS_DESCRIPTION, kOsAll, 2005 IDS_FLAGS_PASSIVE_DOCUMENT_EVENT_LISTENERS_DESCRIPTION, kOsAll,
2025 FEATURE_VALUE_TYPE(features::kPassiveDocumentEventListeners)}, 2006 FEATURE_VALUE_TYPE(features::kPassiveDocumentEventListeners)},
2026 {"passive-event-listeners-due-to-fling", // FLAGS:RECORD_UMA 2007 {"passive-event-listeners-due-to-fling",
2027 IDS_FLAGS_PASSIVE_EVENT_LISTENERS_DUE_TO_FLING_NAME, 2008 IDS_FLAGS_PASSIVE_EVENT_LISTENERS_DUE_TO_FLING_NAME,
2028 IDS_FLAGS_PASSIVE_EVENT_LISTENERS_DUE_TO_FLING_DESCRIPTION, kOsAll, 2009 IDS_FLAGS_PASSIVE_EVENT_LISTENERS_DUE_TO_FLING_DESCRIPTION, kOsAll,
2029 FEATURE_VALUE_TYPE(features::kPassiveEventListenersDueToFling)}, 2010 FEATURE_VALUE_TYPE(features::kPassiveEventListenersDueToFling)},
2030 {"enable-loading-ipc-optimization-for-small-resources", 2011 {"enable-loading-ipc-optimization-for-small-resources",
2031 IDS_FLAGS_OPTIMIZE_LOADING_IPC_FOR_SMALL_RESOURCES_NAME, 2012 IDS_FLAGS_OPTIMIZE_LOADING_IPC_FOR_SMALL_RESOURCES_NAME,
2032 IDS_FLAGS_OPTIMIZE_LOADING_IPC_FOR_SMALL_RESOURCES_DESCRIPTION, kOsAll, 2013 IDS_FLAGS_OPTIMIZE_LOADING_IPC_FOR_SMALL_RESOURCES_DESCRIPTION, kOsAll,
2033 FEATURE_VALUE_TYPE(features::kOptimizeLoadingIPCForSmallResources)}, 2014 FEATURE_VALUE_TYPE(features::kOptimizeLoadingIPCForSmallResources)},
2034 {"enable-font-cache-scaling", IDS_FLAGS_FONT_CACHE_SCALING_NAME, 2015 {"enable-font-cache-scaling", IDS_FLAGS_FONT_CACHE_SCALING_NAME,
2035 IDS_FLAGS_FONT_CACHE_SCALING_DESCRIPTION, kOsAll, 2016 IDS_FLAGS_FONT_CACHE_SCALING_DESCRIPTION, kOsAll,
2036 FEATURE_VALUE_TYPE(features::kFontCacheScaling)}, 2017 FEATURE_VALUE_TYPE(features::kFontCacheScaling)},
(...skipping 11 matching lines...) Expand all
2048 IDS_FLAGS_ENABLE_WEAK_MEMORYCACHE_DESCRIPTION, kOsAll, 2029 IDS_FLAGS_ENABLE_WEAK_MEMORYCACHE_DESCRIPTION, kOsAll,
2049 FEATURE_VALUE_TYPE(features::kWeakMemoryCache)}, 2030 FEATURE_VALUE_TYPE(features::kWeakMemoryCache)},
2050 #if defined(OS_CHROMEOS) 2031 #if defined(OS_CHROMEOS)
2051 {"disable-eol-notification", IDS_FLAGS_EOL_NOTIFICATION_NAME, 2032 {"disable-eol-notification", IDS_FLAGS_EOL_NOTIFICATION_NAME,
2052 IDS_FLAGS_EOL_NOTIFICATION_DESCRIPTION, kOsCrOS, 2033 IDS_FLAGS_EOL_NOTIFICATION_DESCRIPTION, kOsCrOS,
2053 SINGLE_DISABLE_VALUE_TYPE(chromeos::switches::kDisableEolNotification)}, 2034 SINGLE_DISABLE_VALUE_TYPE(chromeos::switches::kDisableEolNotification)},
2054 #endif // defined(OS_CHROMEOS) 2035 #endif // defined(OS_CHROMEOS)
2055 {"fill-on-account-select", IDS_FILL_ON_ACCOUNT_SELECT_NAME, 2036 {"fill-on-account-select", IDS_FILL_ON_ACCOUNT_SELECT_NAME,
2056 IDS_FILL_ON_ACCOUNT_SELECT_DESCRIPTION, kOsAll, 2037 IDS_FILL_ON_ACCOUNT_SELECT_DESCRIPTION, kOsAll,
2057 FEATURE_VALUE_TYPE(password_manager::features::kFillOnAccountSelect)}, 2038 FEATURE_VALUE_TYPE(password_manager::features::kFillOnAccountSelect)},
2058 {"new-audio-rendering-mixing-strategy", // FLAGS:RECORD_UMA 2039 {"new-audio-rendering-mixing-strategy",
2059 IDS_NEW_AUDIO_RENDERING_MIXING_STRATEGY_NAME, 2040 IDS_NEW_AUDIO_RENDERING_MIXING_STRATEGY_NAME,
2060 IDS_NEW_AUDIO_RENDERING_MIXING_STRATEGY_DESCRIPTION, 2041 IDS_NEW_AUDIO_RENDERING_MIXING_STRATEGY_DESCRIPTION,
2061 kOsWin | kOsMac | kOsLinux | kOsAndroid, 2042 kOsWin | kOsMac | kOsLinux | kOsAndroid,
2062 FEATURE_VALUE_TYPE(media::kNewAudioRenderingMixingStrategy)}, 2043 FEATURE_VALUE_TYPE(media::kNewAudioRenderingMixingStrategy)},
2063 #if defined(OS_CHROMEOS) 2044 #if defined(OS_CHROMEOS)
2064 {"files-quick-view", IDS_FLAGS_FILES_QUICK_VIEW_NAME, 2045 {"files-quick-view", IDS_FLAGS_FILES_QUICK_VIEW_NAME,
2065 IDS_FLAGS_FILES_QUICK_VIEW_DESCRIPTION, kOsCrOS, 2046 IDS_FLAGS_FILES_QUICK_VIEW_DESCRIPTION, kOsCrOS,
2066 ENABLE_DISABLE_VALUE_TYPE(chromeos::switches::kEnableFilesQuickView, 2047 ENABLE_DISABLE_VALUE_TYPE(chromeos::switches::kEnableFilesQuickView,
2067 chromeos::switches::kDisableFilesQuickView)}, 2048 chromeos::switches::kDisableFilesQuickView)},
2068 {"quick-unlock-pin", IDS_FLAGS_QUICK_UNLOCK_PIN, 2049 {"quick-unlock-pin", IDS_FLAGS_QUICK_UNLOCK_PIN,
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
2139 channel != version_info::Channel::BETA && 2120 channel != version_info::Channel::BETA &&
2140 channel != version_info::Channel::DEV && 2121 channel != version_info::Channel::DEV &&
2141 channel != version_info::Channel::CANARY && 2122 channel != version_info::Channel::CANARY &&
2142 channel != version_info::Channel::UNKNOWN) { 2123 channel != version_info::Channel::UNKNOWN) {
2143 return true; 2124 return true;
2144 } 2125 }
2145 2126
2146 return false; 2127 return false;
2147 } 2128 }
2148 2129
2130 void ReportSingleFlagToHistogram(const std::string& uma_histogram_hame,
2131 const std::string& flag) {
2132 int uma_id = about_flags::testing::kBadSwitchFormatHistogramId;
2133 if (base::StartsWith(flag, "--", base::CompareCase::SENSITIVE)) {
2134 // Skip '--' before switch name.
2135 std::string switch_name(flag.substr(2));
2136
2137 // Kill value, if any.
2138 const size_t value_pos = switch_name.find('=');
2139 if (value_pos != std::string::npos)
2140 switch_name.resize(value_pos);
2141
2142 uma_id = GetSwitchUMAId(switch_name);
2143 } else {
2144 NOTREACHED() << "ReportSingleFlagToHistogram(): flag '" << flag
2145 << "' has incorrect format.";
2146 }
2147 DVLOG(1) << "ReportSingleFlagToHistogram(): histogram='" << uma_histogram_hame
2148 << "' '" << flag << "', uma_id=" << uma_id;
2149
2150 // Sparse histogram macro does not cache the histogram, so it's safe
2151 // to use macro with non-static histogram name here.
2152 UMA_HISTOGRAM_SPARSE_SLOWLY(uma_histogram_hame, uma_id);
2153 }
2154
2149 } // namespace 2155 } // namespace
2150 2156
2151 void ConvertFlagsToSwitches(flags_ui::FlagsStorage* flags_storage, 2157 void ConvertFlagsToSwitches(flags_ui::FlagsStorage* flags_storage,
2152 base::CommandLine* command_line, 2158 base::CommandLine* command_line,
2153 flags_ui::SentinelsMode sentinels) { 2159 flags_ui::SentinelsMode sentinels) {
2154 if (command_line->HasSwitch(switches::kNoExperiments)) 2160 if (command_line->HasSwitch(switches::kNoExperiments))
2155 return; 2161 return;
2156 2162
2157 FlagsStateSingleton::GetFlagsState()->ConvertFlagsToSwitches( 2163 FlagsStateSingleton::GetFlagsState()->ConvertFlagsToSwitches(
2158 flags_storage, command_line, sentinels, switches::kEnableFeatures, 2164 flags_storage, command_line, sentinels, switches::kEnableFeatures,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
2209 FlagsStateSingleton::GetFlagsState()->RemoveFlagsSwitches(switch_list); 2215 FlagsStateSingleton::GetFlagsState()->RemoveFlagsSwitches(switch_list);
2210 } 2216 }
2211 2217
2212 void ResetAllFlags(flags_ui::FlagsStorage* flags_storage) { 2218 void ResetAllFlags(flags_ui::FlagsStorage* flags_storage) {
2213 FlagsStateSingleton::GetFlagsState()->ResetAllFlags(flags_storage); 2219 FlagsStateSingleton::GetFlagsState()->ResetAllFlags(flags_storage);
2214 } 2220 }
2215 2221
2216 void RecordUMAStatistics(flags_ui::FlagsStorage* flags_storage) { 2222 void RecordUMAStatistics(flags_ui::FlagsStorage* flags_storage) {
2217 std::set<std::string> flags = flags_storage->GetFlags(); 2223 std::set<std::string> flags = flags_storage->GetFlags();
2218 for (const std::string& flag : flags) { 2224 for (const std::string& flag : flags) {
2219 std::string action("AboutFlags_"); 2225 ReportSingleFlagToHistogram("AboutFlags.Seen", flag);
2220 action += flag;
2221 content::RecordComputedAction(action);
2222 } 2226 }
Ilya Sherman 2016/08/29 21:19:59 nit: Why not call ReportCustomFlags("AboutFlags.Se
Alexei Svitkine (slow) 2016/08/29 21:50:58 Done.
2223 // Since flag metrics are recorded every startup, add a tick so that the
2224 // stats can be made meaningful.
2225 if (flags.size())
2226 content::RecordAction(base::UserMetricsAction("AboutFlags_StartupTick"));
2227 content::RecordAction(base::UserMetricsAction("StartupTick"));
2228 } 2227 }
2229 2228
2230 base::HistogramBase::Sample GetSwitchUMAId(const std::string& switch_name) { 2229 base::HistogramBase::Sample GetSwitchUMAId(const std::string& switch_name) {
2231 return static_cast<base::HistogramBase::Sample>( 2230 return static_cast<base::HistogramBase::Sample>(
2232 base::HashMetricName(switch_name)); 2231 base::HashMetricName(switch_name));
2233 } 2232 }
2234 2233
2235 void ReportCustomFlags(const std::string& uma_histogram_hame, 2234 void ReportCustomFlags(const std::string& uma_histogram_name,
2236 const std::set<std::string>& command_line_difference) { 2235 const std::set<std::string>& command_line_difference) {
2237 for (const std::string& flag : command_line_difference) { 2236 for (const std::string& flag : command_line_difference) {
2238 int uma_id = about_flags::testing::kBadSwitchFormatHistogramId; 2237 ReportSingleFlagToHistogram(uma_histogram_name, flag);
2239 if (base::StartsWith(flag, "--", base::CompareCase::SENSITIVE)) {
2240 // Skip '--' before switch name.
2241 std::string switch_name(flag.substr(2));
2242
2243 // Kill value, if any.
2244 const size_t value_pos = switch_name.find('=');
2245 if (value_pos != std::string::npos)
2246 switch_name.resize(value_pos);
2247
2248 uma_id = GetSwitchUMAId(switch_name);
2249 } else {
2250 NOTREACHED() << "ReportCustomFlags(): flag '" << flag
2251 << "' has incorrect format.";
2252 }
2253 DVLOG(1) << "ReportCustomFlags(): histogram='" << uma_histogram_hame
2254 << "' '" << flag << "', uma_id=" << uma_id;
2255
2256 // Sparse histogram macro does not cache the histogram, so it's safe
2257 // to use macro with non-static histogram name here.
2258 UMA_HISTOGRAM_SPARSE_SLOWLY(uma_histogram_hame, uma_id);
2259 } 2238 }
2260 } 2239 }
2261 2240
2262 namespace testing { 2241 namespace testing {
2263 2242
2264 const base::HistogramBase::Sample kBadSwitchFormatHistogramId = 0; 2243 const base::HistogramBase::Sample kBadSwitchFormatHistogramId = 0;
2265 2244
2266 const FeatureEntry* GetFeatureEntries(size_t* count) { 2245 const FeatureEntry* GetFeatureEntries(size_t* count) {
2267 *count = arraysize(kFeatureEntries); 2246 *count = arraysize(kFeatureEntries);
2268 return kFeatureEntries; 2247 return kFeatureEntries;
2269 } 2248 }
2270 2249
2271 } // namespace testing 2250 } // namespace testing
2272 2251
2273 } // namespace about_flags 2252 } // namespace about_flags
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698